Skip to content

FSAC = Framework for Scheduling Algorithms Creation. It's a version of the Linux kernel, that includes a framework for rapid scheduling algorithms dynamic creation and insertion.

License

Notifications You must be signed in to change notification settings

Zildj1an/FSAC_Kernel

Repository files navigation

FSAC KERNEL (Framework for Scheduling Algorithm Creation)

Author: Carlos Bilbao Muñoz (GitHub: https://github.com/Zildj1an, mail bilbao at vt.edu)

You can find a patch for the Linux kernel version 4.9.30 here. I compiled the kernel bindeb-pkg so you can find headers and image Debian-style packaged here.

Files modified and created

# File created Purpose
1 /fsac/fsac.c Helps with the management of the special linked lists, and the copy from user.
2 /fsac/fsac_list.c Helps with the management of the special linked lists, and the copy from user.
3 /fsac/fsac_plugin.c Dummy FSAC plugin (default) also manages the list of registered plugins.
4 /fsac/fsac_proc.c Manages the /proc entries. Check loaded plugins, check/change active plugin, stats on it.
5 /include/fsac/fsac.h Header of /fsac/fsac.c. Also includes auxiliary definitions/functions.
6 /include/fsac/fsac_list.h Header of /fsac/fsac_list.c. Also includes auxiliary function.
7 /include/fsac/fsac_macros.h Some macros of FSAC.
8 /include/fsac/fsac_proc.h Header of /fsac/fsac_proc.c.
9 /kernel/sched/fsac_class.c FSAC new scheduling class, will mostly always delegate on the plugin.
10 /include/fsac/fsac_preempt.h Header of /fsac/fsac_preempt.c
11 /fsac/fsac_preempt.c Functions to switch and check the preemption states, for rescheduling.
12 /include/fsac/fsac_param.h The extra parameter added to the struct task struct
13 /include/fsac/fsac_np.h Postponed to future versions, includes functions to manage non-preemptive sections.
14 /fsac/Makefile Kbuild Makefile for compilation
# File modified Main reason
1 /kernel/sched/sched.h Helps with the management of the special linked lists, and the copy from user.
2 /include/uapi/linux/sched.h Helps with the management of the special linked lists, and the copy from user.
3 /kernel/sched.c Dummy FSAC plugin (default) also manages the list of registered plugins.
4 /fs/select.c Manages the /proc entries. Check loaded plugins, check/change active plugin, stats on it.
5 /kernel/locking/mutex.c Header of /fsac/fsac.c. Also includes auxiliary definitions/functions.
6 /kernel/locking/rwsem-xadd.c Same idea as /kernel/locking/mutex.c but with semaphores.
7 /kernel/time/hrtimer.c Same idea as /kernel/locking/mutex.c but for the kernel timer.
8 /mm/page-writeback.c FSAC RT tasks should get special treatment when it comes to writing back dirty pages at the address-space.
9 /mm/page_alloc.c Special amendments at page allocation when the FSAC plugin is intended to be real-time.
10 /kernel/sched/core.c Make sure no Linux balancing, integrate FSAC scheduling class. Also, add hooks for the preemption state machine, like sched_state_entered_schedule() at __schedule(), which flags WILL_SCHEDULE. Per-cpu bool fsac_preemption_in_progress updated in __schedule(). Also in fsac_fork I add if (is_fsac(p)){ p->sched_class = &fsac_sched_class;}
11 /include/linux/sched.h Add handling of Inter-Processor Interrupt (IPI) for FSAC, with sched_state_ipi() at case IPI_RESCHEDULE.
12 /arch/arm/kernel/smp.c The IPI smp_reschedule_interrupt() might produce a transition in the FSAC sched_state machine.
13 /arch/x86/kernel/smp.c Same idea as for /arch/x86/kernel/smp.c
14 /fs/exec.c Added a hook for fsac_exec at do_execveat_common()
15 /kernel/fork.c Added a hook for exit_fsac at __put_task_struct()
16 /Makefile Added to top Makefile the fsac directory at core-y
17 /arch/x86/kernel/machine_kexec_64.c Compilation patch for R_X86_64_PLT32 error
18 /arch/x86/kernel/module.c Compilation patch for R_X86_64_PLT32 error
19 /arch/x86/tools/relocs.c Compilation patch for R_X86_64_PLT32 error

About

FSAC = Framework for Scheduling Algorithms Creation. It's a version of the Linux kernel, that includes a framework for rapid scheduling algorithms dynamic creation and insertion.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published