Commit Graph

320 Commits

Author SHA1 Message Date
Markus Schober
6dc90b1ac2 shm_obtain takes a (size_t *) and modifies the value based on the true
size of the block returned.
2012-02-16 03:34:42 -06:00
Markus Schober
79e67dbe16 drawlines will totally tell you if you gave it a key 2012-02-15 23:14:36 -06:00
Kevin Lange
678ed81c65 Extensive stability fixes. I think I finally squashed those stack bugs. 2012-02-16 22:43:41 -06:00
Kevin Lange
8fb69d44cd I have no frickin' clue what's causing these startup crashes. Requires further investigation. 2012-02-16 15:09:56 -06:00
Kevin Lange
a1d821de9b Various fixes 2012-02-16 14:38:50 -06:00
Kevin Lange
a72f9bc7cf Fix stack bug. 2012-02-16 14:31:40 -06:00
Kevin Lange
4694c67936 Add lock options to thread demo app 2012-02-16 01:48:51 -06:00
Kevin Lange
af860d46f2 Update threadtest to actually demonstrate the classic concurrency bug 2012-02-16 01:34:12 -06:00
Kevin Lange
c67d2796ef Finish threading (might still be some bugs) 2012-02-16 01:06:44 -06:00
Kevin Lange
cffbb02240 Stuff and things 2012-02-15 20:50:31 -06:00
Kevin Lange
3980460484 top/left offsets are SIGNED; add julia fractal thingy 2012-02-13 19:46:00 -06:00
Kevin Lange
86fc80a5e6 Fix overlaps by actually assigning real indexes... 2012-02-13 16:35:57 -06:00
Kevin Lange
c211c61369 Well, that works. 2012-02-13 16:21:52 -06:00
Kevin Lange
9e4d78e721 Fix off-by-one rendering issue 2012-02-12 22:42:25 -06:00
Kevin Lange
749c22c2eb There are some heisenbugs here. I can taste them. 2012-02-12 22:24:02 -06:00
Kevin Lange
1f3d78f8ea Redraw root... 2012-02-12 19:34:19 -06:00
Kevin Lange
abf1e5c837 THIS... IS... SPAAAAARTAAA!!! 2012-02-12 19:30:36 -06:00
Kevin Lange
de0bbe739b Fix a bunch of system calls... 2012-02-12 18:47:01 -06:00
Kevin Lange
e453b08dd6 Debugging, use proper signals, etc. 2012-02-12 17:00:21 -06:00
Kevin Lange
9b1e227c0f Fix a dozen different things. 2012-02-12 16:45:23 -06:00
Markus Schober
c47e199802 Working on window functionality 2012-02-12 05:24:40 -06:00
Kevin Lange
adf2b02b4b [user] Remove the keyboard event loop from julia2
It doesn't even need one; eventually, we'll have window management and
you'll just close the app. It should technically just sit in a loop
endlessly after rendering (or waitforsignal, which we don't have yet).
2012-02-11 22:43:26 -06:00
Kevin Lange
ec391b013e Fix merge conflict 2012-02-11 18:02:14 -06:00
Kevin Lange
49adc34013 Fix buffer overwrites and other issues in compositor 2012-02-11 18:01:21 -06:00
Markus Schober
b06b4fc576 Compositor doesn't clobber the heap anymore. 2012-02-11 17:57:22 -06:00
Markus Schober
a3384aac9e The new compositor is armed and (almost) fully operational! 2012-02-11 15:54:01 -06:00
Kevin Lange
824f2dfb94 fix typos 2012-02-11 01:23:27 -06:00
Kevin Lange
a4178b9248 Magic, identifiers, etc. 2012-02-11 01:20:17 -06:00
Kevin Lange
3411eb380f Protocol refinements 2012-02-11 00:06:09 -06:00
Kevin Lange
9315c95452 Command formats and numbers 2012-02-10 23:29:08 -06:00
Kevin Lange
bc692e83df New compositing work 2012-02-10 23:23:20 -06:00
Markus Schober
d28726fae7 [userspace] really simple second compositor built on shm 2012-02-10 22:54:50 -06:00
Markus Schober
45903b204b fixed a subtle bug in shm; added a bunch of utilities to test it 2012-02-10 22:31:38 -06:00
Kevin Lange
e5f3e49c9d [user] lock application (silly, command line) 2012-02-09 15:29:32 -06:00
Kevin Lange
71842055f4 Fix off-by-one 2012-02-08 22:42:11 -06:00
Kevin Lange
3eb42fe0f0 Fix RPG rendering, finally 2012-02-08 21:22:30 -06:00
Kevin Lange
d1bb652db3 Various.
[init] Reenable freetype in the Terminal spawned from init
[nyancat] Fix timing and update animations
[esh] Fix bug with child pid collection and signal handling
2012-02-08 15:56:27 -06:00
Kevin Lange
499184718d just some fun 2012-02-08 12:04:03 -06:00
Kevin Lange
9daca33cb1 Minor compilation fixes 2012-02-08 12:01:25 -06:00
Kevin Lange
dcc82083ed Compositor doesn't spawn a terminal now :D 2012-02-08 02:45:47 -06:00
Kevin Lange
65fa12f482 SIGNALS 2012-02-08 02:40:44 -06:00
Markus Schober
a09be369ea Merge branch 'master' of git://github.com/klange/osdev 2012-02-07 02:32:40 -06:00
Markus Schober
aec24c08f1 Attaching nearly works! 2012-02-07 02:29:28 -06:00
Kevin Lange
4335ade9bc fire demo, again from a1k0n 2012-02-07 00:11:49 -06:00
Kevin Lange
e2dc01bed7 donut checker... though it has a segfault 2012-02-07 00:06:06 -06:00
Kevin Lange
a95cc17853 Mm, donuts 2012-02-06 23:34:35 -06:00
Kevin Lange
fdaf53b0c4 [shm] Working on negotiation functions 2012-02-05 19:56:21 -06:00
Kevin Lange
c4e33117c0 mkdir and creat testing 2012-02-05 16:04:41 -06:00
Kevin Lange
06a9125c21 Drop redefs of syscalls 2012-02-04 22:57:03 -06:00
Kevin Lange
6590b285b5 Mouse improvements (stability, scaling) 2012-02-04 22:29:46 -06:00
Kevin Lange
1110a119c5 Various blootsplash enhancements. 2012-02-04 01:20:33 -06:00
Kevin Lange
505ed79da3 New compositor and boot splash tests; launches terminal eventually. 2012-02-03 21:15:26 -06:00
Kevin Lange
b0e40ae6df Updated graphics library with sprite loading and stuff 2012-02-03 19:47:36 -06:00
Kevin Lange
2e8144493d Bootsplash testing (launches terminal afterwards) 2012-02-03 18:16:47 -06:00
Kevin Lange
aac1d78e35 Drop packets from the mouse if the client isn't reading fast enough 2012-02-02 20:37:50 -06:00
Kevin Lange
90392d47e6 blink blink blink blink blink 2012-02-02 20:28:26 -06:00
Kevin Lange
4366a20a8f Pipe and packet-based mouse device 2012-02-02 16:16:29 -06:00
Kevin Lange
ab5506b766 [julia] Don't clear the display, it causes problems 2012-01-31 20:47:32 -06:00
Kevin Lange
21218be799 Fix 24-bit rendering 2012-01-31 14:30:12 -06:00
Kevin Lange
dc2badc80e Simple line editing and buffering 2012-01-31 01:25:17 -06:00
Kevin Lange
71298a5c83 Relatively broken local echo support 2012-01-31 00:16:09 -06:00
Kevin Lange
ab1958632c hostname utility 2012-01-30 13:29:13 -06:00
Kevin Lange
93df034d2b Fix hostname file handling 2012-01-30 12:13:11 -06:00
Kevin Lange
238278c3fc init, get/sethostname 2012-01-30 12:10:53 -06:00
Kevin Lange
84bbcf5f95 Support backspace in login (still no local echo) 2012-01-29 20:45:40 -06:00
Kevin Lange
cbcf098e5b Compositing test. 2012-01-29 17:05:42 -06:00
Kevin Lange
1d7c91f3b1 Unicode is hard... thus, I'm not done. 2012-01-28 22:27:37 -06:00
Kevin Lange
fd77e36013 Add bin/uname, fix disk buidling
Disk will now rebuild when userspace/*.c are updated.
Make sure you build in userspace/ first!
2012-01-28 17:10:03 -06:00
Kevin Lange
c65e458c50 Stop building binaries out of loader/
This is what userspace/ is for; consequentally, all userspace
applications now depend on the full toolchain and will build using the C
library.
2012-01-28 16:19:57 -06:00
Kevin Lange
db7020cbce [security] Shadow Passwords, whoami, and more
This update includes support for shadow passwords, stored in
/etc/master.passwd, as well as support for an /etc/passwd file
containing user/uid/full name/shell associations, which are used by the
shell to get your username for display purposes, as well as by whoami
for the same reason. The login tool does not yet select the right shell
though this is planned.

* root's password is `toor` (a throwback to older times)
* local's password is `local` (because it's obvious)
2012-01-27 18:04:39 -06:00
Kevin Lange
00d0eb8fac Simple line editing (backspace support) 2012-01-27 13:16:23 -06:00
Kevin Lange
a47fe02224 Directory switching 2012-01-27 13:10:58 -06:00
Markus Schober
405868ac8a First commit of readdir/ls support. 2012-01-27 04:04:04 -06:00
Kevin Lange
9061f91e74 stat(), fstat(), /bin/stat 2012-01-27 03:12:29 -06:00
Kevin Lange
d112f6fedb Reboot [and fix user/group permissions in fork()] 2012-01-26 23:11:43 -06:00
Kevin Lange
8edb567279 oops 2012-01-26 22:55:22 -06:00
Kevin Lange
ac8354d805 Add some system calls, plus a fakish /bin/login 2012-01-26 22:46:18 -06:00
Kevin Lange
b4c8d7a3ff Fix nyancat height to work on new terminal 2012-01-25 19:04:39 -06:00
Kevin Lange
8b1b0453f8 [userspace] Update build scripts 2012-01-25 17:07:42 -06:00
Kevin Lange
e52ca55db1 [userspace] Fix multitasking-test
Without flushing, this doesn't work properly with the terminal pipe.
Technically, this is an issue in the pipe implementation, but as that's
not technically what we're testing there's no sense having it be broken.

For the record, everything works wonderfully.
2012-01-25 16:59:44 -06:00
Kevin Lange
3b7d737a13 Fix slow terminal by loading fonts into memory 2012-01-25 16:12:56 -06:00
Kevin Lange
7682eb6cdf Change error number format in esh 2012-01-25 14:57:27 -06:00
Kevin Lange
a0139691dd Fix the loader/ apps to use fds 2012-01-25 14:41:11 -06:00
Kevin Lange
d73d2e2361 [cmos] Fix userspace clock 2012-01-25 13:50:30 -06:00
Kevin Lange
1a2cb28fc1 [pipe] Fix write overrun and other issues 2012-01-25 00:54:59 -06:00
Kevin Lange
339b82e10c [massive commit] Userspace terminal.
Completely removes:
* The kernel terminal (both VGA and graphical)
* The kernel ANSI parser (obviously)
* kgets() function
* Dozens of other functions that were made useless

Adds:
* Userspace terminal that should work (relatively) well
* Keyboard device driver (implemented with a "pipe" object)
* Stabalized interrupt interface
* `clear` uses the c library
* All panic screens and kprintf() output goes to the serial line ONLY
* The kernel boots directly into /bin/terminal (no arguments, unless you
  want to add them (such as -f))
2012-01-25 00:19:52 -06:00
Kevin Lange
d9c0c8efb6 Pipes, dup2, and an almost-kinda-working terminal 2012-01-24 19:06:07 -06:00
Kevin Lange
6c042aba53 Pipes 2012-01-24 18:40:25 -06:00
Kevin Lange
fb200db703 Herp 2012-01-24 12:10:57 -06:00
Kevin Lange
6203bc0063 Fix default output colors 2012-01-24 11:56:42 -06:00
Kevin Lange
b4856c563c Italic, Underline, X-Out support 2012-01-24 11:53:03 -06:00
Kevin Lange
dc353cd954 Update cursor style 2012-01-24 11:15:15 -06:00
Kevin Lange
436435589a Adjusted font settings, bold support 2012-01-24 11:01:31 -06:00
Kevin Lange
e05515844d Null device 2012-01-23 23:01:23 -06:00
Kevin Lange
9be2f43935 [term] Change sample output a bit 2012-01-23 22:37:09 -06:00
Kevin Lange
ce51204fe4 Use DejaVu with same sizings and hintings as my xterm 2012-01-23 22:26:13 -06:00
Kevin Lange
ee1ade379f [cat] handle load failure without seg faulting 2012-01-23 14:24:23 -06:00
Kevin Lange
ed31c2cbea Drop serial output from standard terminal 2012-01-23 12:36:59 -06:00
Kevin Lange
7e716019ec Freetype, why are you so slow? 2012-01-23 00:13:50 -06:00
Kevin Lange
2174cfb59e Rough test: Userspace port of the terminal.
Need to replace the bitfont with freetype, get the thing attached to a
pipe, start getting other stuff to run under it, and then we can remove
the kernel's graphical terminal.
2012-01-22 23:36:49 -06:00
Kevin Lange
e5330b1df0 Started work on the full ELF loader and C++ support 2012-01-18 20:12:04 -06:00
Kevin Lange
870d93c235 Add a pseudo-daemonizing clock app 2012-01-10 23:22:27 -06:00
Kevin Lange
5fa42a5d34 Fix a kgets() thread-switcing bug 2012-01-10 20:14:07 -06:00
Kevin Lange
aa748bc99a Hmpf. 2012-01-10 19:14:30 -06:00
Kevin Lange
edebb12573 [misc] Boot logging to screen 2011-12-26 19:23:58 -06:00
Kevin Lange
c0f45e0b7f VESA mode switching support.
BIOS execution is provided through the `v8086` module, which provides
software emulation of an 8086 processor. It is not currently working
with some BIOSes and may (read: probably will be) replaced with another
emulator (x86emu comes to mind) at some point in the near future. In the
meantime, the default video mode for QEMU works with this and it's
enough to get us on real VESA instead of fake VBE. The `bochs` module
will be renamed in a future commit. Userspace programs have been
adjusted to work at bitrates other than 32 *POORLY*. If you write pixels
left-to-right, they should work fine. They only work with 24-bpp
otherwise, and then you need to be careful of what pixels you are
writing when, or you will overwrite things in other pixels.

You may pass a commandline argument like the following to set display
modes:

  vid=vesa,1024,768

Or for stranger modes under QEMU or Bochs, use the bochs VBE
initializer:

  vid=bochs,1280,720

Note that the address of the linear framebuffer is still found via
hackish probing instead of PCI or trusting the VBE information, so if
you have things in the wrong memory ranges (0xE0000000+), be prepared to
have them get read.

Once again, this entire commit is a massive hack. I am happy that it
worked, and I will continue to make it less hacky, but in the meantime,
this is what we've got.

Happy holidays.
2011-12-25 00:40:40 -06:00
Kevin Lange
d0be767eb8 [minor] Remove unused macro from freetype_test 2011-12-16 13:27:08 -06:00
Kevin Lange
a4d17cb382 Graphics resolution independence (targetting VESA support); update README 2011-12-16 13:16:20 -06:00
Kevin Lange
021585e9ef [misc] Massive improvements to process handling
- Free process resources when a process exits (reaped in next process
  cycle; should probably reap after a wait() or something)
- Free process struct after wait()
- Fix page allocation
- Fix fork() return value for child process (attempted to write to an
  invalid point in kernel-stack memory)

We shouldn't be triple faulting randomly anymore!

Continue investigating the fork() return value, as there was a bugged
return at some point during executon of a test run of thrash-process.
2011-12-15 17:21:28 -06:00
Kevin Lange
20fab345a8 [user] Simple little test app that triggers a stack overflow 2011-12-14 20:06:09 -06:00
Kevin Lange
d7d52555c9 [user] Redundant -O 2011-12-12 04:11:07 -06:00
Kevin Lange
c54de06083 [esh] Support &, search path 2011-12-07 15:08:40 -06:00
Kevin Lange
fa09f76582 [esh] Handle bad execs 2011-12-06 20:36:40 -06:00
Kevin Lange
dca46fffc4 [sys] wait(pid) 2011-12-06 20:13:20 -06:00
Kevin Lange
d52e73e71e [esh] Esh, the experimental shell 2011-12-06 19:46:35 -06:00
Kevin Lange
8f6d345039 [userspace] Nyancat!
Also works on a standard xterm:
    gcc -o nyancat nyancat.c
    ./nyancat
(Be sure to set your terminal to at least 128 wide and 64 tall)
2011-11-29 23:41:02 -06:00
Kevin Lange
f3a52d272a Move all of the ramdisk support into the hard disk 2011-11-18 14:45:19 -06:00
Kevin Lange
3726a9a043 [user] We can enable optimizations and strip for smaller binaries 2011-10-28 01:21:59 -05:00
Kevin Lange
e3f5cb0e47 [user] Update userspace makefile 2011-10-28 01:09:55 -05:00
Kevin Lange
e54a6be038 Move userspace directory to 'userspace' 2011-10-27 20:12:31 -05:00