PDA

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/