------------------------------ | COMPILATION DIRECTIVES | ------------------------------ The HSFQ process scheduler, HSFQ packet scheduler and the Cello disk scheduler can be turned on or off while compiling the kernel using xconfig. Here are the points to be kept in mind when compiling: (1) The kernel needs to be compiled with the SMP option OFF. (2) Choose 'Y' for the 'Code maturity level options'. The option for LRP does not appear as this feature has not been implemented in this version of QLinux. It was implemented in version 2.2.0 of the kernel. --------------------------------------------------------- | HSFQ CPU and packet scheduler related notes | --------------------------------------------------------- o All paths are relative to the top linux directory. o Following is the list of files in which HSFQ CPU scheduler related changes were made. 1. /include/linux/cpu_hsfq.h -- new file 2. /include/linux/sched.h -- modified 3. /include/linux/sched_2.4.4.h -- new file 4. /include/linux/sched_hsfq.h -- new file 5. /kernel/fork.c -- modifled 6. /kernel/sched.c -- modifled 7. /kernel/sched_2.4.4.c -- new file 8. /kernel/sched_hsfq.c -- new file o In all these files, the QLinux specific code can easily be located Throughout these files, comment of the type /** HSFQ */ indicates that QLinux specific code follows. o The list of new/modified files that implement the HSFQ packet scheduler is as follows. 1. /include/linux/net_hsfq.h -- new file 2. /include/linux/rtnetlink.h -- modified 3. /include/linux/sch_hsfq.h -- new file 4. /include/linux/skbuff.h -- modified 5. /include/linux/socket.h -- modified 6. /include/net/sock.h -- modified 7. /net/core/skbuff.c -- modified 8. /net/core/sock.c -- modified 9. /net/ipv4/ip_output.c -- modified 10. /net/ipv4/route.c -- modified 11. /net/sched/net_hsfq.h -- newfile 12. /net/sched/sch_api.c -- modified 13. /net/sched/sch_hsfq.c -- new file 14. /net/sched/sch_hsfq.h -- new file o Comments similar to those mentioned above help locate QLinux related additions or modifications in all these files. There is also helpful documentation preceding important functions describing what they do. ------------------------------------------- | Cello related notes -- Vijay Sundaram | ------------------------------------------- Here is a list of the modified/new files with comments on the additions -- FLAGS : _____ Any modifications that I have made are complied only if the flag _LINUX_CELLO_H is set Currently I have defined this flag in cello.h The #ifndef _LINUX_CELLO_H #define _LINUX_CELLO_H could be replaced by #ifdef _LINUX_CELLO_H Apart from this enabling The CELLO_PRINT call will print the entire route from the read/write call down to the disk. I have this disabled. The CELLO_DEBUG call prints some details which I have currently enabled. Disabling this disables some printk's and the cello performance goes down. __________________________________________________________ MODIFICATION DETAILS : ____________________ File-wise details on the modifications. As any changes I have made within the flags _LINUX_CELLO_H so they should be easy to locate and edit. 1. & 2. unistd.h and entry.S Added the cello_specific system calls (10 of them) 3. blkdev.h -- three changes a) Include "cello.h" in the beginning b) Added a huge set of cello_specific structures in the beginning. c) A few adds in "struct request_queue" 4. cello.h -- this is a new file to be placed in /usr/src/linux/include/linux/ along with other header files. 5. fs.h -- three changes a) include "cello.h" in the beginning b) One add in "struct buffer_head" c) One add in "struct file" 6. mm.h -- two changes a) include cello.h in the beginning b) One add in "typedef struct page" 7. sched.h -- one change a) Added variable "int cello_class" in "struct task_struct" 8. open.c -- three changes a) modified "sys_close" b) added "sys_cello_open" c) added "sys_cello_close" 9. read_write.c -- two changes a) added "sys_cello_read" b) added "sys_cello_write" 10. filemap.c -- five changes a) one add in "generic_file_read" -- JUST A PRINTK b) two changes in "do_generic_file_read" c) two changes in "generic_file_write" 11. buffer.c -- three changes a) one add in "generic_commit_write" -- JUST A PRINTK b) one add in "__block_commit_write" c) one add in "block_read_full_page" 12. ll_rw_block.c -- 11 changes If you haven't touched this file you can simply copy the appropriate version. Else look for changes using the "_LINUX_CELLO_H" flag. a) Add and at the top. a) One add in blk_cleanup_queue b) One add in blk_init_queue c) Definition of cello_pending_enQ before "submit_bh" d) two adds in "submit_bh" e) three adds in "ll_rw_block.c" -- TWO ARE JUST PRINTKS f) one big add at the bottom within the _LINUX_CELLO_H flag I guess this should make the modifications simpler or you could simply copy the ll_rw_block.c file if you don't touch it. __________________________________________________________ End Notes.