View Full Version : Writing a scheduler
justint
January 23rd, 2010, 04:33
Hi, I'm trying to write my own custom scheduler.
I'm having trouble knowing where to declare my code and what's the best way to "stick it into the kernel".
1. I have a global: custom_scheduler = 0, which the user can toggle
2. in kern/kern_switch.c:
runq_choose() {
...
if(custom_scheduler)
return my_scheduler(rq);
...
}
What's the best way to include my function my_scheduler(struct runq* rq)? Can I create a kld module? Or must I #include <kern/my_scheduler.c> or something along those lines?
Sorry for such a dumb question, but I'm just starting with freebsd development.
Thanks!
GPF
January 23rd, 2010, 14:57
Questions concerning the low level implementation of the kernel are better addressed at the hackers mailing list. I'll give you enough to get you started though.
Take a look at /sys/kern/sched_4bsd.c and /sys/kern/sched_ule.c
These are the two schedulers you 'll find in fbsd, ule is used by default. grep the code in /sys/kern with the right keyword and perhaps you 'll find your answer alone before someone just hands it to you.
Good luck!
FDeveloper
November 11th, 2010, 14:53
Hi,
can you tell me what's wrong with justint's solution for implementing the new scheduler if we change all runq_choose functions?
FDeveloper
November 25th, 2010, 09:52
Hello,
I have another question.
I want to change the ule scheduler a little.
for this purpose I decided to call a lkm(syscall) in tdq_choose function in sched_ule.c file and implement my code in that module.
Is that correct to do call a lkm in kernel?
If yes, how can I call the module?
I used syscall(syscall_num,...) it has compile error and the error is:
usr/src/sys/kern/sched_ule.c:1233: warning: implicit declaration of function 'syscall'
can anyone help me how to fix the problem?
thanks.
richardpl
November 25th, 2010, 21:56
Isn't syscall for userland?
FDeveloper
November 26th, 2010, 15:41
I think, we can open, exit, fork and other syscalls in kernel, don't we?
I don't know how we should call a syscall(lkm) in kernel codes?
Alt
November 26th, 2010, 16:05
fork/exit in kernel ? o_O
richardpl
November 26th, 2010, 18:20
You can certainly fork and exit kernel processes and kernel threads in kernel.
FDeveloper
November 27th, 2010, 07:07
So, does anyone know how can we call a syscall (lkm) in kernel codes?
richardpl
November 27th, 2010, 09:48
Ask on mailing lists.
fidaj
October 22nd, 2011, 09:54
Hi!
Well - there are some results?
Can I have something to test?
Do you know about the existence of alternative scheduling FBFS? http://rudot.blog.com/
vBulletin® v3.8.7, Copyright ©2000-2012, vBulletin Solutions, Inc.