我想在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);
调度程序功能源代码在哪里?我应该复制此代码的确切位置在哪里?重新编译内核需要进行哪些更改?
答案 0 :(得分:2)
调度程序位于sys / kern / sched_ule.c中,可以通过在源代码树顶部执行“make buildkernel installkernel”来重建,它是内核的一部分。这意味着上面的代码,使用stdio,无法正常工作。可能有用的是使用现有设施,例如异步记录队列(man 4 alq)。
最简单的方法是使用DTrace,因为这不需要重建内核。