Adding a sched_class after the removal of ".next" regarding priority

J Mårtensson martensson.jacob at gmail.com
Thu May 20 18:05:27 EDT 2021


Hi,
I have been trying to add a new scheduler to the Linux kernel. I have
found that to add a sched_class, I need to add it to SCHED_DATA in
vmlinux.lds.h. instead of editing the now removed .next variable.
Depending on what order I put into the priority list, it will crash
the kernel during the booting process after rebooting. Any tips on
what could be causing this would be appreciated!

Currently this works

#define SCHED_DATA              \
    STRUCT_ALIGN();             \
    __begin_sched_classes = .;      \
    *(__idle_sched_class)           \
    *(__my_sched_class)         \
    *(__fair_sched_class)           \
    *(__rt_sched_class)         \
    *(__dl_sched_class)         \
    *(__stop_sched_class)           \
    __end_sched_classes = .;

While this does not

#define SCHED_DATA              \
    STRUCT_ALIGN();             \
    __begin_sched_classes = .;      \
    *(__idle_sched_class)           \
    *(__fair_sched_class)           \
    *(__my_sched_class)         \
    *(__rt_sched_class)         \
    *(__dl_sched_class)         \
    *(__stop_sched_class)           \
    __end_sched_classes = .;


Regards
Jacob



More information about the Kernelnewbies mailing list