Is this advice for assembly language?The Linux kernal is written in C (with GNU extentions) with *some* assembly code.
When looking at Scheduling there are lots of ways you can do it.
- First in first out (FIFO)
- Priority scheduling
- Shortest remaining time first
- Fixed priority pre-emptive scheduling
- Round-robin scheduling
- Multilevel queue scheduling
- Work-conserving schedulers
I suggest that you start with a simple FIFO task scheduler using a queue as a starting point. There is no reason that you can't do that entirely in C.
If you haven't already - Before making a task scheduler I would suggest that you start with learning about abstract data types in C first. Things like:
- Single-linked Lists
- Double-linked Lists
- Circular Lists
- Stacks
- Queues
- Priority Queues
- Deques
- Heterogeneous Structures and Object Trees
- Binary Trees
- Balanced Binary Trees
- Tries
- Hash Tables
- Sparse Matrix
... And write at least one program for each one.
I have downloaded FreeRTOS sample codes which run on PC. Just trying to understand the sample code