更改内核中的调度程序功能代码并重新编译它

时间:2014-12-26 21:56:09

标签: kernel scheduler freebsd

我想在FreeBSD中调度调度函数的次数。 FreeBSD在ULE scheduler中使用,我希望在这个函数的顶部添加几行来记录它,然后编译并安装新的内核。

例如,我想将这些行添加到调度程序函数中:

FILE *fp;
char* str = "string";
int x = 10;

fp=fopen("/tmp/mylog.log", "w");
if(fp == NULL)
    exit(-1);
fprintf(fp, "A new call of freebsd scheduler function  ");
fclose(fp);  

调度程序功能源代码在哪里?我应该复制此代码的确切位置在哪里?重新编译内核需要进行哪些更改?

1 个答案:

答案 0 :(得分:2)

调度程序位于sys / kern / sched_ule.c中,可以通过在源代码树顶部执行“make buildkernel installkernel”来重建,它是内核的一部分。这意味着上面的代码,使用stdio,无法正常工作。可能有用的是使用现有设施,例如异步记录队列(man 4 alq)。

最简单的方法是使用DTrace,因为这不需要重建内核。