Commit Graph

758 Commits

Author SHA1 Message Date
Kevin Lange
1287af81ef Reinsert vim hints magically 2014-06-07 23:51:01 -07:00
Kevin Lange
71fa8d5185 ... missed a couple 2014-06-07 23:48:18 -07:00
Kevin Lange
a2ed4b4f0e strip vim: lines from kernel 2014-06-07 23:43:21 -07:00
Kevin Lange
e1a9cd87d2 Include additional contributors in kernel/main.c 2014-06-07 23:31:45 -07:00
Kevin Lange
ef7d72c1e1 License headers and a tool to generate them 2014-06-07 23:13:29 -07:00
Kevin Lange
dcaa023347 Processes now inherit names 2014-06-07 18:32:10 -07:00
Kevin Lange
02dbc0e1f4 some vague attempt at revealing links in stat 2014-06-07 12:58:45 -07:00
Kevin Lange
f21ab2b3fb Default st_nlink to 1, not 0 2014-06-05 22:19:46 -07:00
Kevin Lange
34d81fca37 Probably fix mkdir in tmpfs 2014-06-05 19:08:07 -07:00
Kevin Lange
3f6a5e0fdc remove debug output from shebang exec 2014-06-03 23:21:38 -07:00
Kevin Lange
3e03dffc4b merge 2014-06-03 23:20:46 -07:00
Kevin Lange
5eacca2361 Fix argument handling and recursive shebangs 2014-06-03 20:42:59 -07:00
Kevin Lange
4733a26c74 Fix argument offsets 2014-06-01 23:37:00 -07:00
Kevin Lange
389f20f140 fairly naïve shebang implementation 2014-06-01 23:10:11 -07:00
Kevin Lange
fb49a12728 Add reverse foreach for lists 2014-06-01 12:56:55 -07:00
Kevin Lange
9eb63b4bfd more room for panic messages 2014-06-01 01:32:33 -07:00
Kevin Lange
6296aff867 Fix handling of eof in login 2014-05-30 17:05:49 -07:00
Kevin Lange
9eef96cb6a ^D should actually not echo 2014-05-29 23:41:17 -07:00
Kevin Lange
d4b334f119 Remove redundant r_b_interrupts in tty 2014-05-29 22:08:52 -07:00
Kevin Lange
53aee7dc38 Implement ^D 2014-05-29 21:39:56 -07:00
Kevin Lange
84420f9e5c Support closing packetfs connections 2014-05-28 19:21:56 -07:00
Kevin Lange
252fe84ab0 Close and cleanup before we reap. 2014-05-27 23:20:02 -07:00
Kevin Lange
c5d79b2bc6 Fix a memory leak in file opening 2014-05-27 22:52:37 -07:00
Kevin Lange
049057cd23 reenable sigpipe delivery 2014-05-27 21:42:22 -07:00
Kevin Lange
d696f51f8b Real unix pipes 2014-05-27 21:38:30 -07:00
Kevin Lange
ab2a9f056f Quick and dirty display server nesting - lots of mouse event changes 2014-05-26 12:43:22 -07:00
Kevin Lange
f054cebdce naive implementation of sudo and possibly insecure setuid support 2014-05-25 21:59:51 -07:00
Kevin Lange
18251f66c1 Merge pull request #46 from lioncash/leak
Fix a memory leak within vfs.c in kopen.
2014-05-21 17:55:49 -07:00
Lioncash
935f594cd3 Fix a memory leak within vfs.c in kopen. 2014-05-21 20:41:26 -04:00
Lioncash
55bf5fe03d Fix incorrect module size in kmain. 2014-05-21 20:22:24 -04:00
Kevin Lange
290eb0f344 Some IRC cleanup 2014-05-19 19:39:04 -07:00
Kevin Lange
dff654ae93 Reduce debug messages for waitpid to INFO level 2014-05-18 10:27:28 -07:00
Kevin Lange
1dfa71aee9 A start on cleaning up network stack 2014-05-17 23:16:30 -07:00
Kevin Lange
03f8f5062c Interactive IRC connection 2014-05-17 12:40:01 -07:00
Kevin Lange
3ae82af245 Fix DHCP packets 2014-05-14 00:37:06 -07:00
Kevin Lange
98d6516cd4 Craft our own packets instead of using prebuilt ones 2014-05-13 22:09:15 -07:00
Kevin Lange
1f3066d949 Display graphical panic on out-of-memory 2014-05-10 20:22:04 -07:00
Kevin Lange
913c4b004f make the video panic screen display a message 2014-05-10 19:12:31 -07:00
Kevin Lange
898c5f23d3 Desaturate entire display on kernel panic 2014-05-10 14:03:13 -07:00
Kevin Lange
e37fdd2b4b Various bits of cleanup; actually examine packets 2014-05-08 19:29:23 -07:00
Kevin Lange
cecf4f619d Oops, only do that for certain allocations 2014-05-07 00:09:15 -07:00
Kevin Lange
d50710e250 Fix erroneous irq ack 2014-05-06 23:27:58 -07:00
Kevin Lange
e5a8ed3a68 Not the cleanest, but better than before... 2014-05-06 22:38:21 -07:00
Kevin Lange
b824abf250 Kill lwip stuff; add back in native rtl driver
Now with actual working stuff.
2014-05-06 22:14:05 -07:00
Kevin Lange
5319ce7e80 Fix an edge case failure in elf allocation 2014-05-03 15:35:24 -07:00
Kevin Lange
15c0208e99 Show user EIP for segfaults in kernel 2014-05-03 15:35:03 -07:00
Kevin Lange
ce48da7973 Fix debug_shell module 2014-05-03 00:15:07 -07:00
Kevin Lange
edd086b4aa Bump version to 0.7.2 2014-05-02 23:28:27 -07:00
Kevin Lange
10e241e982 Fix non-syscall validate 2014-05-02 19:28:14 -07:00
Kevin Lange
976c086e9c Define num_syscalls at compile time 2014-05-02 18:52:43 -07:00
Kevin Lange
fe19f4ad19 Extensive syscall table cleanup 2014-05-02 18:47:41 -07:00
Kevin Lange
bff1314c29 Add a header with syscall numbers 2014-05-02 18:34:38 -07:00
Kevin Lange
ac32220090 Remove disabled block of unneeded code in fork 2014-05-02 18:34:25 -07:00
Kevin Lange
bd73b07da9 Drop a few more legacy syscalls 2014-05-02 10:58:28 -07:00
Kevin Lange
e16043684a Only bother to deliver non-ignored blocked signals
So we don't accidentally interrupt a read or something.
2014-04-29 00:52:36 -07:00
Kevin Lange
4d8335ad75 Implement proper wait/waitpid.
This is a pretty big commit, so let's run through it in parts:

- All of the userspace changes are to switch away from syscall_wait
  Mostly, this is to waitpid; some things were tweaked to do things
  "properly" instead of waiting for particular processes. Init has
  been fixed to do a proper spin wait.
- syscall_wait is gone - as are its uses. newlib bindings have been
  using just waitpid for a while now.
- waitpid now performs like a Unix waitpid
- process reaping is no longer a "do this on next change thing":
  it happens when a process is waited on, like it should
  (That means we can have real zombies: terminated processes that
  have not yet been waited on)
- Reparenting of children to init has been implemented, so you
  can fork-daemonize!

Overall, this is pretty big... So I hope it doesn't break everything.
2014-04-27 01:37:33 -07:00
Kevin Lange
1c65d3d663 Include git short sha in version string instead of -dev 2014-04-26 22:17:30 -07:00
Kevin Lange
2db3fccd24 Do a better job with page table management 2014-04-25 23:17:20 -07:00
Kevin Lange
f9db32ec99 Bump version 2014-04-25 20:39:09 -07:00
Kevin Lange
1f235bb3e7 Don't forget to invalidate page directories after we free everything 2014-04-25 20:02:30 -07:00
Kevin Lange
8a786b6ffe Fix some potential mapping issues 2014-04-25 19:48:43 -07:00
Kevin Lange
4beb3a42dc throw frame allocation behind a lock so it's atomic 2014-04-25 00:15:08 -07:00
Kevin Lange
dedc201bc1 Ensure {0,0} auxv makes it into memory 2014-04-24 23:02:28 -07:00
Kevin Lange
e2a6ce072d Fix call to external malloc from klrealloc 2014-04-24 22:38:12 -07:00
Kevin Lange
e3ffd36083 Fix critical exec issue with not freeing old dir
We weren't freeing old page directories on exec, so regardless of the
actual size needed for the new process, we ended up with a huge address
space usage. Now, all of the memory from the other process is going to
be copied on the fork, and we can't do anything about that (beyond
writing a separate syscall that forks+replaces without the copy, or
implementing CoW, the latter being preferred) but that's at least a
well-know "problem".
2014-04-24 00:03:55 -07:00
Kevin Lange
c31bedd69e Let's just ... not do that 2014-04-21 19:40:28 -07:00
Kevin Lange
d0bfc0a5bb Efficient reallocation of SHM chunks (mostly) 2014-04-20 17:11:35 -07:00
Kevin Lange
d967fae3a5 Track down the root of that malloc problem 2014-04-20 13:19:52 -07:00
Kevin Lange
d99dc5688e Fix a glitch with signal handling 2014-04-19 19:10:22 -07:00
Kevin Lange
ff56f48ed5 Handle common symbols in module loader 2014-04-19 13:21:56 -07:00
Kevin Lange
3459f19443 List all undefined symbols before bailing when loading modules 2014-04-19 00:08:42 -07:00
Kevin Lange
ead93c5307 Probably as good a time as any to mark off 0.7.0 2014-04-18 20:40:25 -07:00
Kevin Lange
9b3cfc7fe6 More gracefully handle cases where ramdisk is big 2014-04-15 23:10:00 -07:00
Kevin Lange
6c6c3e18c1 Don't spam the log when increases the kernel heap 2014-04-15 19:57:25 -07:00
Kevin Lange
9ad1b50cb8 Change how we determine that a process is in a queue 2014-04-13 02:05:12 -07:00
Kevin Lange
d43f517464 Remove a lock from something that shouldn't be locking anyway 2014-04-13 02:05:01 -07:00
Kevin Lange
7d2083cae9 handle printf("%s", NULL) without crashing 2014-04-13 02:04:34 -07:00
Kevin Lange
20a1c56023 Fix some major paging issues 2014-04-13 02:04:01 -07:00
Kevin Lange
c1a2c312bb Fix a typo and a potentially crash with timers 2014-04-13 02:03:11 -07:00
Kevin Lange
d25e66b4bf Fix a null dereference from lists/trees 2014-04-13 02:02:17 -07:00
Kevin Lange
bf5d607a83 Fix extern declaration of isrs table 2014-04-13 02:01:56 -07:00
Kevin Lange
1f4d108c6c Don't allocate buffer on stack 2014-04-13 02:01:31 -07:00
Kevin Lange
0033d16cfa Fix a bad printf in syscalls 2014-04-13 02:01:20 -07:00
Kevin Lange
402392c109 Fix a potential crash on kernel tasklet startup 2014-04-13 02:01:08 -07:00
Kevin Lange
5a5cb62ce0 kill sockfs, what even is this 2014-04-13 00:51:37 -07:00
Kevin Lange
367c31c687 Restructuring intial paging setup 2014-04-12 23:03:56 -07:00
Kevin Lange
5673c2ee8f Cleanup fault handling 2014-04-12 23:03:44 -07:00
Kevin Lange
8cd386ba5b Set up a fake device for early boot logging 2014-04-12 23:02:03 -07:00
Kevin Lange
9e50872d5e Add multiboot mem map struct 2014-04-12 23:01:38 -07:00
Kevin Lange
e11edbbfd4 Don't calculate syscall table size at runtime 2014-04-12 23:00:59 -07:00
Kevin Lange
5a134e9a67 Fix missing header include 2014-04-12 18:46:25 -07:00
Kevin Lange
bf5409d0da Fix a problem with list merging / trees 2014-04-12 18:30:42 -07:00
Kevin Lange
7cb739b7cd Fix signalled wakeups from timed sleeps 2014-04-12 18:25:56 -07:00
Kevin Lange
ed6dc9507d Fix signal wakeups from existing sleeps 2014-04-12 18:15:28 -07:00
Kevin Lange
597a17949e Lists should have owners. 2014-04-12 18:15:10 -07:00
Kevin Lange
d771a2bff2 Don't forget to free those 2014-04-12 18:14:52 -07:00
Kevin Lange
2a53068ddc pipes and ringbuffers should have two wait queues 2014-04-12 18:14:35 -07:00
Kevin Lange
b09c08e48b Remove dead code 2014-04-12 18:14:07 -07:00
Kevin Lange
3d7a3969eb Support launching arbitrary debug shells 2014-04-11 22:43:39 -07:00
Kevin Lange
a5a17099f6 pretty kernel debug shell 'help' command 2014-04-11 18:29:28 -07:00
Kevin Lange
860ded23d2 update some copyright years 2014-04-11 09:41:46 -07:00
Kevin Lange
9b2d31f51f make pci_scan take an extra arg 2014-04-10 23:34:55 -07:00
Kevin Lange
75a7d5e7f2 Fix some module loading silliness 2014-04-10 23:08:07 -07:00
Kevin Lange
7009e4ec1c Continued progress on Yutani 2014-04-06 18:21:35 -07:00
Kevin Lange
a9b9c2e20d Random header cleanup 2014-04-05 16:36:17 -07:00
Kevin Lange
521dc9b77b rename fs_printf, move it to logging, kill kprintf
fs_printf is now fprintf
kprint_to_file is now debug_file

debug_file and fprintf are defined in logging
kprintf has been removed
2014-04-05 16:12:09 -07:00
Kevin Lange
51d398fc76 Remove special handling for tty access, make init do it 2014-04-05 15:43:14 -07:00
Kevin Lange
f16145cff6 lots of log overhauling 2014-04-05 15:23:17 -07:00
Kevin Lange
7dd6646ae3 Logging tweaks to kill some kprintfs 2014-04-05 15:05:24 -07:00
Kevin Lange
f8deaed26a Dirty hack to fix breakage when nothing is running 2014-04-04 21:30:14 -07:00
Kevin Lange
5277e3ce64 More PEX cleanup 2014-04-02 22:50:32 -07:00
Kevin Lange
8b64e2b7d9 read/write when not present should return errors 2014-04-02 00:26:04 -07:00
Kevin Lange
c74ede8c3b Remove superfluous definition of kernel_symbol_t 2014-03-27 23:39:54 -07:00
Kevin Lange
9ff5bd39da Expose tmpfs functionality so modules can extend it later 2014-03-27 23:38:22 -07:00
Kevin Lange
8980f568a3 Consolidate datastructure libraries 2014-03-24 20:18:40 -07:00
Kevin Lange
1e91dea4cc Move rtl experiments into separate module 2014-03-24 20:00:16 -07:00
Kevin Lange
9b5cf9cec5 Video as a module, kill device_init 2014-03-19 18:56:07 -07:00
Kevin Lange
17d092e3ff Ramdisk support (again) 2014-03-18 21:37:12 -07:00
Kevin Lange
8080a74a2d Module dependencies 2014-03-18 20:11:56 -07:00
Kevin Lange
e5aa49beda (hack) make /dev listings work
This is a bit of a hack. /dev is presented as a new pseudo file type
until I finish the VFS overhaul. This fake file presents a directory
with entries for all of the VFS nodes that are children of it. The
future VFS will do this on its own, thus making this superfluous.
2014-03-16 21:41:19 -07:00
Kevin Lange
aa8ac11dd2 Fix GRUB boot stuff 2014-03-16 18:54:32 -07:00
Kevin Lange
0a08fa257e Partition mappings 2014-03-16 18:39:03 -07:00
Kevin Lange
ee30393e48 Keyboard + Mouse as modules 2014-03-16 15:13:27 -07:00
Kevin Lange
cc0c32f278 Detect segfaults in modules and print information 2014-03-16 14:39:39 -07:00
Kevin Lange
013939fbc3 New ext2 module 2014-03-16 13:30:25 -07:00
Kevin Lange
984fa1d4c6 EXT2 backed by block device
WARNING: THIS BREAKS PARTITIONS

Until I get partition maps and can produce device entries like
/dev/hda1, partitions will be broken, so DON'T TRY TO BUILD AN IMAGE
WITH THE IMAGE BUILDER.

Hopefully this is all rectified in under 24 hours...
2014-03-16 01:33:01 -07:00
Kevin Lange
1ccd39de5c kill kprint_to_screen 2014-03-15 23:56:10 -07:00
Kevin Lange
82a917d270 no more serial syscall
More cleanup

Oopsy
2014-03-15 20:51:11 -07:00
Kevin Lange
877c2d9d6f tmpfs, random to mods; drop ext2ramdisk 2014-03-15 19:58:38 -07:00
Kevin Lange
b46d632116 serial, null, zero to modules 2014-03-15 19:48:51 -07:00
Kevin Lange
f5bbab90c1 Drop the device 'hello world' sample 2014-03-15 19:28:16 -07:00
Kevin Lange
ccc86c4dc3 Fix multiple modules, make procfs a module 2014-03-15 17:51:33 -07:00
Kevin Lange
c1a77bc3c5 early placement heap doesn't need alignment 2014-03-15 00:43:12 -07:00
Kevin Lange
dafc4f93b6 woops, accidentally left debug output on 2014-03-15 00:37:43 -07:00
Kevin Lange
c4fc02f87d Support modules from bootloader (again) 2014-03-15 00:36:50 -07:00
Kevin Lange
99db031259 Module listing shell commands 2014-03-15 00:03:48 -07:00
Kevin Lange
818fe2787b include stuff 2014-03-14 23:47:07 -07:00
Kevin Lange
903f7f6524 Expose shell to other modules (TODO: dependencies) 2014-03-14 23:37:42 -07:00
Kevin Lange
91767bcc69 Debug shell as a module 2014-03-14 23:17:59 -07:00
Kevin Lange
e9e892bae5 Unresolved symbol handling 2014-03-12 00:18:55 -07:00
Kevin Lange
ed03c517ad More real module loading
Still need to do proper loading of the ELF sections somewhere, but other
than that, we've got a standard interface now. Needs a syscall so we can
write an insmod or something like that.
2014-03-11 23:56:08 -07:00
Kevin Lange
c67d054526 Actually need to handle these as errors, but let's just be safe. 2014-03-11 07:59:00 -07:00
Kevin Lange
47ace6c8d6 Cleanup headers 2014-03-09 23:31:13 -07:00
Kevin Lange
be7dc6fb17 Support more relocation methods 2014-03-09 23:01:30 -07:00
Kevin Lange
1389916cba quick cleanup 2014-03-09 22:37:49 -07:00
Kevin Lange
c051fe7ee1 First module load! 2014-03-09 22:31:34 -07:00
Kevin Lange
cc4391d783 Initial work on modules
There's a lot here, so let's through it:
- Lots of work to include a symbol table in the kernel. We can't rely on
  our bootloader to give us our own ELF information, so we do this
  separately. This probably should be changed to output a C source
  rather than assembly, but that's a TODO.
- Makefile can now generate modules. It works basically the same way any
  other kernel object works, expect with a slightly different linking
  scheme.
- Commands have been added to the debug shell to load modules, but they
  don't work yet - still need to get through relocation and linking.
- Commands have been added to the debug shell to print the symbol list,
  as well as print symbol values (but note that printing symbol values
  is kinda dangerous if you don't know what they are, so don't just go
  printing things willy-nilly).
2014-03-09 19:36:28 -07:00
Kevin Lange
1655cfc600 Suggested cleanups from sortie 2014-02-26 21:10:56 -08:00
Kevin Lange
d42617020f random rtl network stuff, not working yet 2014-02-26 21:00:16 -08:00
Kevin Lange
608b0406e6 Update pci headers 2014-02-26 20:59:25 -08:00