-
Notifications
You must be signed in to change notification settings - Fork 8
/
TODO
101 lines (88 loc) · 2.74 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Global TODO
~~~~~~~~~~~
Short term TODO:
+ proper shutdown() / reboot() that unmounts filesystems
+ ^C kills a process
+ zmodem up/down
+ CANONICAL input mode
+ proper locking in the filesystem code
+ terminal size ioctl in nano
Known Kernel Bugs:
+ pi3: "temp" temperature stops working once virtual memory is enabled
+ device_tree code truncates the command line at 255 bytes
+ the occasional "unknown interrupt" (memtest triggers this on pi3)
The lightning bolt appears, so probably a low-power problem
(how do we read this source?)
+ Framebuffer access takes forever, should not do inside of a
syscall (should buffer and only send out every 60 Hz or so?)
+ Interrupts are disabled during a syscall, so we can lose clock
ticks
+ user accounting resolution: how does the linux-kernel do this?
we can't account sub 16ms resolution.
Probably read out the countdown register even if it hasn't
triggered yet.
+ Compiling error with old gcc -- smp code setting the constant
for the stack values. Split to two instructions rather
than relying on movt insns
Old bugs (still there?)
+ pi1: segfault kill on inavlid memory access causes weird behavior
(probably not restoring stack correctly)
Known Userspace Bugs:
+
Kernel feature requests:
+ system calls
- mmap() syscall
+ filesystems
- fat filesystem driver
- ext2 filesystem driver
+ block layer
- loopback device
- partition table support
+ device drivers
- i2c support
- sd card support
- spi support
- mini-uart driver
- 1-wire driver
- USB ( https://github.com/rsta2/uspi )
- sound
+ keyboard driver
- Properly generate ANSI escape chars for arrows, etc
- Use FIQ interrupt?
+ framebuffer:
- queue up updates off screen, have kernel thread update
maybe once a tick (64 fps)
- allocate framebuffer memory at run time, rather than
big static array
+ heartbeat -- uses GPIO29 on 3B+?
+ times() -- higher granularity on the system accounting
need a free-running timer (or PMU?)
Have timer count but only trigger overflow at higher value?
Userspace feature requests:
+ vlibc
- scanf()
- malloc()
+ printa / printb
- make printb a hard link to printb
+ shell
- command history
- tab completion
- file re-direction
+ New utilities/programs
- init (actual, rather than shell)
- assembler
- compiler
- du
- grep
- less
Pi Generational Support
+ Pi2 -- check that it works on both old (armv7) and new (armv8)
+ Pi2/Pi3 enhanced irqchip support, see:
[PATCH 4/4] irqchip: Add bcm2836 interrupt controller for Raspberry Pi 2
+ Pi3 -- add ARMv8 (arm64) support
+ Pi3 ACT LED (behind i2c GPIO extender)
+ Pi4 support (major changes)
Performance:
+ tophalf/bottomhalf IRQ split
+ optimized memcpy
+ optimize graphics routines