Skip to content

Latest commit

 

History

History
70 lines (69 loc) · 4.03 KB

TODO.org

File metadata and controls

70 lines (69 loc) · 4.03 KB

Maybe switch to C99 (to allow inline). (or maybe not!)

Allow the user to define its own Panic() function

Be compatible with C++ user tasks

Be compatible with Rust task.

Be compatible with Go tasks ?

Looks complicated, due to the presence of the garbage collector…

Add a license and define a file header to add to each file for distribution

Pick a version numbering model.

Reference resources

Providing links and documentation over the Internet.

Add a README file

Write documentation about header files organization

For context saving: Allow the user to define a task with no context saving

Write doc about progmem

Add a CONTRIBUTING file and update README.md about that

Prefix Lazuli structs in userspace with “Lz_”

Find a logo

Document build chain

Add an “end of file” comment marker at the end of each file.

Cf. Barr conventions.

For example programs: write the purpose of each program.

Replace Arch_DisableInterrupts() with Arch_DisableInterruptsGetStatus() where possible.

When using CONFIG_CHECK_XXXXX, unify the calls to Panic() or return.

Decide which one is the best.

Rename some functions for API consistency:

Lz_Run() => Lz_System_Run()

Lz_RegisterTask() => Lz_System_RegisterTask() (or Lz_Task_Register)

Add non blocking mutex lock

Something like bool Lz_Mutex_TryLock(Lz_Mutex * const mutex);

Implement pipes

Lz_Pipe, Lz_Pipe_Read(), Lz_Pipe_Write(), Lz_Pipe_TryRead()

Move linked lists functions declarations in a kernel header file.

The user list.h header file will only contain the definition of structs.

Find a way to get rid of #including AVR interrupts header file in kernel code.

If threads are killed/crash while holding locks, what happens?

For Cpu_Sleep -> Maybe combine the 3 calls in 1 ASM call.

Generate doxygen documentation for stdint.h.

Make it ZERO dynamic allocation.

Allow the user to statically define the structures needed by the system (in particular tasks + stacks)

Place the incremental memory allocator in a separate module. By the way, the incremental memory allocator is not thread safe.

In documentation about modules:

After creating the module directory:

Update CMakeLists.txt to add_subdirectory.

Update config.h.in to add the configuration macro constant.

In .dir-locals.el add configuration for C style.

In .bashrc of the Docker image: display a warning if the version of the image doesn’t match the version of the repository.

CMake config : prefix the config cache variables by their respective categories.

Implement scheduler queues with AVL trees.

Think about defining the execution of the main() function in the idle task.

i.e. Execution begins as the idle task, and user tasks are created from the idle task.

This allows/ease the implementation of Pthread API.

Carefully think about priorities.

For PROGMEM, implement “memcpy_P”: Memory_CopyFromProgmem

Test command “apropos” in man pages of the Docker image.

In the Docker image, make sure to respect the File Hierarchy Standard

Doxygen seems to have problems dealing with 2 header files of the same name in different directories

mandb: can’t open /usr/share/man/man3/sys_clock_24.h.3: No such file or directory

Check if it’s a real bug, and declare the issue to the Doxygen project.

mandb: warning: /usr/share/man/man3/Clock24_Increment.3.gz: bad symlink or ROFF `.so’ request

Think about renaming the GitHub repository to “LazuliRTOS”.

Host the Lazuli docker image to GitHub instead of docker.io.

Think about moving libc header files to the directory include/

See if we can also get rid of directory libc/, as the corresponding functionalities are actually implemented as kernel modules

See if it would be necessary to declare all global variables used the scheduler.c and kernel.c as ‘volatile’.