Austin Clements
97657d703f
Add -fno-omit-frame-pointer to compile flags.
...
At some point between gcc 4.4 and 4.6, omitting the frame pointer
became default if any -O is specified. getcallerpcs relies on the
frame pointer, so bring it back.
2011-06-24 14:22:19 -04:00
Russ Cox
cf4b1ad90b
xv6: formatting, cleanup, rev5 (take 2)
2011-02-19 21:17:55 -05:00
Russ Cox
89bfdd4db1
multiboot support and memory-only (no disk) kernel
2011-01-11 13:27:45 -05:00
Austin Clements
124fe7e457
Rev 4
2010-09-03 15:47:28 -04:00
Austin Clements
41c4bbb505
Make it easy to change the number of CPUs
2010-09-01 02:14:35 -04:00
Austin Clements
51e2a7b324
print depends on runoff.spec
2010-08-31 17:30:31 -04:00
Austin Clements
880ee18ab1
mkfs must be compiled 32-bit. Fix mkfs warnings
2010-08-31 15:11:10 -04:00
Austin Clements
1e8035be53
Infer qemu path, just like in JOS
2010-08-31 15:05:27 -04:00
Austin Clements
0f0456ec53
Infer TOOLPREFIX, just like in JOS
2010-08-31 15:01:26 -04:00
Robert Morris
81b30b14d6
Merge remote branch 'origin/master' into page
2010-08-30 15:30:53 -04:00
Austin Clements
fe4623b99c
Fix for gdbstub argument change in qemu 0.11. Rename qemu-gdb-nox target to qemu-nox-gdb because you frequently want to add the gdb part, but rarely the nox part.
2010-08-30 12:22:08 -04:00
Robert Morris
eb18645f17
fix allocuvm() to handle sbrk() with non-page-granularity argument
...
(maybe this never worked, but it works now)
2010-08-05 12:10:54 -04:00
Frans Kaashoek
40889627ba
Initial version of single-cpu xv6 with page tables
2010-07-02 14:51:53 -04:00
Austin Clements
5e710e688e
Add stressfs and gdbutil to dist
2009-11-23 17:50:58 -05:00
Austin Clements
f4c12f116d
Add the test we used in lecture to creash the IDE system when the
...
locks were moved around.
2009-11-23 17:27:26 -05:00
Austin Clements
77a9aa55cd
Record debug info for assmebly code
2009-10-05 13:20:23 -04:00
Austin Clements
bab819ed8d
Be consistent with JOS make targets
2009-09-30 22:09:48 -04:00
Austin Clements
01396b3a87
xv6 runs the console on the serial port, not the parallel port
2009-09-20 23:07:59 -04:00
Silas Boyd-Wickizer
074ac7ccd4
add .gdbinit.tmpl to dist
2009-09-15 19:15:59 -04:00
Silas Boyd-Wickizer
01b667e45d
rev3
2009-09-15 17:21:14 -04:00
Silas Boyd-Wickizer
568bbae801
qemu-gdb target and script
2009-09-15 17:15:36 -04:00
Russ Cox
7e0cc8e36e
another attempt at cpu-local variables.
...
this time do it ourselves instead of piggybacking on TLS.
add -fno-pic to Makefile; pic code breaks our fake TLS.
2009-09-02 10:07:59 -07:00
Nickolai Zeldovich
45a9782636
fix bootblock build with gcc 4.4
2009-09-02 02:03:46 -04:00
Russ Cox
48755214c9
assorted fixes:
...
* rename c/cp to cpu/proc
* rename cpu.context to cpu.scheduler
* fix some comments
* formatting for printout
2009-08-30 23:02:08 -07:00
Russ Cox
0aef891495
shuffle and tweak for formatting.
...
pdf has very good page breaks now.
would be a good copy for fall 2009.
2009-08-08 01:07:30 -07:00
rsc
19333efb9e
Some proc cleanup, moving some of copyproc into allocproc.
...
Also, an experiment: use "thread-local" storage for c and cp
instead of the #define macro for curproc[cpu()].
2009-05-31 00:28:45 +00:00
rtm
adcd16c3f7
restore std toolprefix
2008-09-11 10:22:01 +00:00
rtm
4651d04ad1
omit *.d from tar file
2008-09-11 10:20:40 +00:00
rsc
1808b2f1b3
now rev2
2008-08-20 18:00:35 +00:00
nelhage
d7a90d3b5c
This should fix building on FreeBSD
2007-09-19 23:49:52 +00:00
nelhage
6197c04208
Fix compilation on 64-bit machines (thanks to andersk for patch)
2007-09-18 00:41:34 +00:00
rsc
e51ae8a272
do not toss .ps
2007-08-30 18:33:48 +00:00
rsc
05109382d6
tweak
2007-08-30 14:12:19 +00:00
rsc
68a2d5373d
match README
2007-08-28 19:30:29 +00:00
rsc
e3f271e880
oops
2007-08-28 17:48:44 +00:00
rsc
818fc0125e
replace setjmp/longjmp with swtch
2007-08-28 12:48:33 +00:00
rsc
2d7d2b18cf
rename 8253pit -> timer
2007-08-28 04:41:20 +00:00
rsc
1a89baa7c6
add grep; add lost echo
2007-08-28 04:26:34 +00:00
rsc
76f09d7dd0
clean up Makefile; add wc
2007-08-28 04:20:40 +00:00
rsc
f0d11fea82
Move keyboard code into kbd.c; add backspace handling.
2007-08-28 03:28:13 +00:00
rsc
19b42cc078
Rename main0 to main.
2007-08-27 23:32:16 +00:00
rsc
e0e7d07e5a
test that fork fails gracefully
2007-08-24 20:20:23 +00:00
rsc
6bf2e5c898
add ln
2007-08-22 05:54:55 +00:00
rsc
f32f3638f4
Various cleanup:
...
- Got rid of dummy proc[0]. Now proc[0] is init.
- Added initcode.S to exec /init, so that /init is
just a regular binary.
- Moved exec out of sysfile to exec.c
- Moved code dealing with fs guts (like struct inode)
from sysfile.c to fs.c. Code dealing with system call
arguments stays in sysfile.c
- Refactored directory routines in fs.c; should be simpler.
- Changed iget to return *unlocked* inode structure.
This solves the lookup-then-use race in namei
without introducing deadlocks.
It also enabled getting rid of the dummy proc[0].
2007-08-21 19:22:08 +00:00
rsc
e0924827ee
add kill
2007-08-08 08:50:23 +00:00
rsc
af689dcf7e
oops
2007-08-08 08:40:08 +00:00
rsc
349ee132f0
add zombie program
2007-08-08 08:38:55 +00:00
rsc
ca3d577671
add rule to generate init.sym
2007-08-08 07:43:02 +00:00
rsc
b438eff6bf
Have kernel build rule create kernel.sym, which can be
...
used in Bochs to make breakpoint setting easier:
load-symbols "kernel.sym"
vb 0x8:"main0"
c
disasm/25 "main0"
vb 0x8:"main0"+0x5f
c
etc.
2006-09-17 19:21:12 +00:00
rsc
db2d8e4b82
dist rules
2006-09-08 14:41:06 +00:00
kaashoek
5692823b1f
minor makefile fixes for printing
...
cut last line of readme so that readme fits on single page
2006-09-07 21:03:13 +00:00
rsc
339a9beaf5
new targets bochs and qemu
2006-09-07 20:06:15 +00:00
kaashoek
52253dce65
remove fstest
2006-09-07 14:17:30 +00:00
rsc
7e019461c8
fix build
2006-09-07 14:10:52 +00:00
kaashoek
a64cd81342
one regression test program
2006-09-07 13:23:41 +00:00
rsc
94d7e25975
avoid system binary clashes
2006-09-07 13:07:39 +00:00
kaashoek
f70172129c
run without lapic and ioapic, if they are not present
...
if no lapic available, use 8253pit for clock
now xv6 runs both on qemu (uniprocessor) and bochs (uniprocessor and MP)
2006-09-07 01:37:58 +00:00
rsc
2a55cc5501
runoff tweaks
2006-09-06 19:22:24 +00:00
rsc
f3fc72c5b6
clean up after mkfs
2006-09-06 19:11:39 +00:00
rsc
9936bffa45
fd.* -> file.*
2006-09-06 18:40:28 +00:00
rsc
61d03d0eef
rm rm
2006-09-06 18:18:43 +00:00
kaashoek
d49a2d5386
nits
2006-09-06 01:25:41 +00:00
rsc
fae7779da7
New formatting scripts.
...
The use/defs extraction in runoff still needs some work
for xv6 code style.
2006-09-05 15:50:55 +00:00
kaashoek
97a5bba6d2
index for printout
...
some cleanup
2006-09-03 14:38:10 +00:00
rtm
dfcc5b997c
prune unneeded panics and debug output
2006-08-29 19:06:37 +00:00
kaashoek
d7ce6545e7
better printout
2006-08-29 17:50:19 +00:00
kaashoek
b52151e032
some text in readme
...
generate postscript printout
2006-08-28 18:31:33 +00:00
kaashoek
ea2909b6b5
user-level malloc (untested)
...
nit in sbrk
indirect block
fix dup to share fd struct
2006-08-24 02:44:41 +00:00
rtm
ceb0e42796
proc[0] can sleep(), at least after it gets to main00()
...
proc[0] calls iget(rootdev, 1) before forking init
2006-08-16 01:56:00 +00:00
rtm
350e63f7a9
no more proc[] entry per cpu for idle loop
...
each cpu[] has its own gdt and tss
no per-proc gdt or tss, re-write cpu's in scheduler (you win, cliff)
main0() switches to cpu[0].mpstack
2006-08-15 22:18:20 +00:00
kaashoek
d7b3b802f4
user-level programs: mkdir and rm
...
shell parses arguments (very simplistic)
readme version of README (sh doesn't deal with capital characters)
printf recognizes %c
nicer output format for ls
2006-08-14 21:22:13 +00:00
kaashoek
1f544842ce
fstat
...
primitive ls
2006-08-12 04:33:50 +00:00
rtm
17a856577f
init creates console, opens 0/1/2, runs sh
...
sh accepts 0-argument commands (like userfs)
reads from console
2006-08-11 13:55:18 +00:00
kaashoek
28d9ef04dd
printf
...
convert userfs to use printf
bfree
ifree
writei
start on unlink
2006-08-10 01:28:57 +00:00
rtm
0e84a0ec6e
fix race in holding() check in acquire()
...
give cpu1 a TSS and gdt for when it enters scheduler()
and a pseudo proc[] entry for each cpu
cpu0 waits for each other cpu to start up
read() for files
2006-08-08 19:58:06 +00:00
kaashoek
c8b29f6d03
better interrupt plan---this one appears to work
...
ioapic
2006-08-04 18:12:31 +00:00
rtm
8455980b27
exec arguments
2006-07-28 22:33:07 +00:00
rtm
c59361f143
primitive exec
2006-07-27 21:10:00 +00:00
rtm
11a9947f1a
bread
...
iget
mkfs makes a file system image
put this in your .bochsrc:
ata0-slave: type=disk, mode=flat, path="fs.img", cylinders=1024, heads=1, spt=1
2006-07-21 13:18:04 +00:00
rsc
857d60cb0c
cleaner
2006-07-17 01:51:47 +00:00
rsc
f15a3ae263
cleaner
2006-07-17 01:36:32 +00:00
rsc
8a7eb80e47
fix main return type
2006-07-16 16:03:51 +00:00
rsc
b903b693ec
tidy up
2006-07-16 15:35:18 +00:00
kaashoek
f27a68a24a
extract lapic code from mp.c
2006-07-12 17:00:54 +00:00
rsc
5ce9751cab
Changes to allow use of native x86 ELF compilers, which on my
...
Linux 2.4 box using gcc 3.4.6 don't seem to follow the same
conventions as the i386-jos-elf-gcc compilers.
Can run make 'TOOLPREFIX=' or edit the Makefile.
curproc[cpu()] can now be NULL, indicating that no proc is running.
This seemed safer to me than having curproc[0] and curproc[1]
both pointing at proc[0] potentially.
The old implementation of swtch depended on the stack frame layout
used inside swtch being okay to return from on the other stack
(exactly the V6 you are not expected to understand this).
It also could be called in two contexts: at boot time, to schedule
the very first process, and later, on behalf of a process, to sleep
or schedule some other process.
I split this into two functions: scheduler and swtch.
The scheduler is now a separate never-returning function, invoked
by each cpu once set up. The scheduler looks like:
scheduler() {
setjmp(cpu.context);
pick proc to schedule
blah blah blah
longjmp(proc.context)
}
The new swtch is intended to be called only when curproc[cpu()] is not NULL,
that is, only on behalf of a user proc. It does:
swtch() {
if(setjmp(proc.context) == 0)
longjmp(cpu.context)
}
to save the current proc context and then jump over to the scheduler,
running on the cpu stack.
Similarly the system call stubs are now in assembly in usys.S to avoid
needing to know the details of stack frame layout used by the compiler.
Also various changes in the debugging prints.
2006-07-11 01:07:40 +00:00
kaashoek
7837c71b32
disable all interrupts when acquiring lock
...
user program that makes a blocking system call
2006-07-06 21:47:22 +00:00
rtm
8b4e2a08fe
swtch saves callee-saved registers
...
swtch idles on per-CPU stack, not on calling process's stack
fix pipe bugs
usertest.c tests pipes, fork, exit, close
2006-07-01 21:26:01 +00:00
rtm
c41f1de5d4
file descriptors
...
pipes
2006-06-27 14:35:53 +00:00
rtm
bf3903612d
system call arguments
2006-06-26 15:11:19 +00:00
rtm
df5cc91659
compile "user programs"
...
curproc array
2006-06-22 20:47:23 +00:00
kaashoek
21a88fd487
checkpoint. booting second processor. stack is messed up, but thanks to cliff
...
and plan 9 code, at least boots and gets into C code.
2006-06-22 01:28:57 +00:00
kaashoek
7baa34a421
start on MP; detect MP configuration
2006-06-21 01:53:07 +00:00
rtm
ae6e8aa730
checkpoint
2006-06-16 20:29:25 +00:00
rtm
be0a7eacda
sleep, wakeup, wait, exit
2006-06-15 19:58:01 +00:00
rtm
a4c03dea09
primitive fork and exit system calls
2006-06-15 16:02:20 +00:00
rtm
0a70d042d0
more or less take traps/interrupts
2006-06-13 15:50:06 +00:00
rtm
70a895f63c
xx
2006-06-12 15:27:13 +00:00
rtm
55e95b16db
import
2006-06-12 15:22:12 +00:00