forked from rosly/rados
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
79 lines (67 loc) · 4.03 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
--------------------------------------------------------------------------------
Library: RadOs
Author: Radoslaw Biernacki <radoslaw.biernacki@gmail.com>
License: BSD Revised
--------------------------------------------------------------------------------
Todo list.
Following list represent the issues which need to be fixed or improved.
If you are interested for involvement into project, this is good starting point.
Each task should be described with complexity level, which would should be the
estimation of required programing experience.
Format:
(architecture or OS module) COMPLEXITY - description
Performance:
- (various places) MEDIUM - minimize the length of the critical sections (IRQ
disabled). Instead use the scheduler lock instead
(if possible). At least some slicing could be done
in some places to minimize the timespan in which the
interrupts are kept disabled.
- (AVR) HARD - improve the ISR entry and leave code and
arch_context_switch() so not all register would need
to be stored on ISR entry. Use the CallSaved and
CallUsed ABI sets for that purpose.
(https://gcc.gnu.org/wiki/avr-gcc)
- (AVR and MSP430) EASY - Use Harley's or Goryavsky algorithm for
arch_bitmask_fls() for platforms without HW CLZ
operation
- (all platforms) MEDIUM - Calculation of: - cycles of each OS functions
- maximal cycles count of critical sections
- cycles for task enqueue (make_ready)
and top prio task dequeue
Features:
- (waitqueue) HARD - os_waitqueue_prepare() should be able to suspend the
task in case task with higher priority is already
waiting on the same waitqueue. This will sole one
TODO which aleady describe unfair scheduling inside
os_waitquue_wakeup()
- (msg_queues) MEDIUM - lock-free message queues in form of library similar
to work done on wip_message_box branch
- (MSP430 & AVR) MEDIUM - CPU sleep states for arch_idle(), best in MCU
agnostic way
- (scheduler) HARD - Proto-threads (task's that share the same stack)
- (interrupts) HARD - Sofrirq based on the same concept as in Linux. Wi
enable development of low latency and high throughput
device drivers based on top and bottom half's. Softirq
should be run in context of least prioritized Irq for
proper co-existence with nested interrupt handling. For
platforms like ARM M this should be the SVC.
Mics:
- (various places) EASY - Change numeric defines into enum typedefs, fix the
sync parameter type (check which type is used for
packet enums)
- (various places) HARD - Full support for Doxygen
- (various places) HARD - Fix TODO's in code
- (various places) EASY - Remove code redundancy (double deffinition of macros
etc)
- (various places) EASY - move OS_LIKELY/OS_UNLIKELY to os_private.h
- (various places) EASY - move test_assert() to generic ???
- (various places) EASY - Integration with C++ (extern "C" {} etc.)
- (various places) MEDIUM - C++ wrapers for OS API (classes for OS primitives)
- (integation) MEDIUM - Intergation with Arduino IDE for easy use by less
expirenced users
Other:
- check if we can eliminate wait_queue[0] since idle_task never sleeps (only
idle_task has prio = 0)
New platforms:
- ARM Cortex M0 and M3
--------------------------------------------------------------------------------