122fc
![]() |
|
|
|
|
|||||||
| FreeBSD Development Kernel development, writing drivers, coding, and questions regarding FreeBSD internals. |
![]() |
|
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
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: Code:
runq_choose() {
...
if(custom_scheduler)
return my_scheduler(rq);
...
}
Sorry for such a dumb question, but I'm just starting with freebsd development. Thanks! Last edited by DutchDaemon; November 26th, 2010 at 01:22. |
|
#2
|
||||
|
||||
|
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! Last edited by DutchDaemon; January 23rd, 2010 at 19:41. Reason: typofix |
|
#3
|
|||
|
|||
|
Hi,
can you tell me what's wrong with justint's solution for implementing the new scheduler if we change all runq_choose functions? |
|
#4
|
|||
|
|||
|
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: Code:
usr/src/sys/kern/sched_ule.c:1233: warning: implicit declaration of function 'syscall' thanks. Last edited by DutchDaemon; November 25th, 2010 at 16:45. Reason: proper formatting: http://forums.freebsd.org/showthread.php?t=8816 |
|
#5
|
|||
|
|||
|
Isn't syscall for userland?
|
|
#6
|
|||
|
|||
|
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? |
|
#7
|
||||
|
||||
|
fork/exit in kernel ? o_O
|
|
#8
|
|||
|
|||
|
You can certainly fork and exit kernel processes and kernel threads in kernel.
|
|
#9
|
|||
|
|||
|
So, does anyone know how can we call a syscall (lkm) in kernel codes?
|
|
#10
|
|||
|
|||
|
Ask on mailing lists.
|
|
#11
|
|||
|
|||
|
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/ |
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Question about writing a daemon in C | overmind | Userland Programming & Scripting | 4 | February 11th, 2010 00:51 |
| Writing a GUI (C++) for a chat app (C) - how? | caesius | Userland Programming & Scripting | 12 | January 4th, 2010 01:15 |
| how to check how fast ZFS is read/writing? | wonslung | General | 11 | July 6th, 2009 10:59 |
| CPU limit for jails under ULE scheduler | kostjn | FreeBSD Development | 7 | May 30th, 2009 09:59 |
| Writing a new helper function | bsd_newbie | Porting New Software | 3 | February 11th, 2009 18:22 |