/xv6-public/ |
H A D | memlayout.h | 11 #define V2P(a) (((uint) (a)) - KERNBASE) argument 12 #define P2V(a) ((void *)(((char *) (a)) + KERNBASE)) argument
|
H A D | vm.c | 63 char *a, *last; in mappages() local 66 a = (char*)PGROUNDDOWN((uint)va); in mappages() 74 if(a == last) in mappages() 76 a += PGSIZE; in mappages() 225 uint a; in allocuvm() local 232 a = PGROUNDUP(oldsz); in allocuvm() 233 for(; a < newsz; a += PGSIZE){ in allocuvm() 259 uint a, pa; in deallocuvm() local 264 a = PGROUNDUP(newsz); in deallocuvm() 265 for(; a < oldsz; a += PGSIZE){ in deallocuvm() [all …]
|
H A D | TRICKS | 10 forkret1 in trapasm.S is called with a tf argument. 20 the first time a process returns to user space, and 21 at that point, cp->tf is set to point to a trap frame 23 *is* a valid %esp that can hold interrupt state. 26 a cli before the mov tf, %esp. 49 There is a (harmless) race in pushcli, which does 56 Consider a bottom-level pushcli. 66 not every time it schedules a process), it will 120 is not a correct way to do this: 132 get reused for a different process (with a new pid), all [all …]
|
H A D | mkfs.c | 15 #define static_assert(a, b) do { switch (0) case 0: case (a): ; } while (0) argument 49 uchar *a = (uchar*)&y; in xshort() local 50 a[0] = x; in xshort() 51 a[1] = x >> 8; in xshort() 59 uchar *a = (uchar*)&y; in xint() local 60 a[0] = x; in xint() 61 a[1] = x >> 8; in xint() 62 a[2] = x >> 16; in xint() 63 a[3] = x >> 24; in xint() 253 #define min(a, b) ((a) < (b) ? (a) : (b)) argument
|
H A D | sleep1.p | 2 This file defines a Promela model for xv6's 4 a model of a simple producer/consumer queue. 11 After a successful run spin prints something like: 19 an execution trace that causes a deadlock. 37 then a deadlock can happen, because the non-atomic 39 decrement in consumer, causing value to have a bad value.
|
H A D | entryother.S | 5 # Each non-boot CPU ("AP") is started up in response to a STARTUP 9 # STARTUP. Thus this code must start at a 4096-byte boundary. 14 # Startothers (in main.c) sends the STARTUPs one at a time. 16 # a newly allocated per-core stack in start-4,the address of the 33 # Switch from real to protected mode. Use a bootstrap GDT that makes
|
H A D | dot-bochsrc | 14 # choose a default for you. 29 # If you do not write a display_library line, Bochs will choose a default for 168 # booting from 'a' (or 'floppy'). 181 # The path should be the name of a disk image file. On Unix, you can use a raw 244 # In UNIX it may be possible to use a raw device as a Bochs hard disk, 289 # boot: a 411 # a device to use as com1. This can be a real serial line, or a pty. To use 422 # (connect a networking socket). 478 # non-continuous sound. 750000 is usually a good value. This needs a 628 # This enables a remap of a physical localized keyboard to a [all …]
|
H A D | toc.hdr | 2 The source code has been printed in a double column format with fifty 4 Thus there is a convenient relationship between line numbers and sheet numbers.
|
H A D | Notes | 19 though there is a kernel stack page for each process 29 hmm, you need a global curproc[cpu] for trap() &c 35 we can't really use a separate stack segment, since stack addresses 37 data vs text. how can we have a gap between data and stack, so that 74 in many cases you can use table elements w/o a lock 85 so a recursive timer interrupt is possible 96 provide a single mechanism? 100 test: one process unlinks a file while another links to it 101 test: one process opens a file while another deletes it 121 make it work on a real machine
|
H A D | toc.ftr | 3 The source listing is preceded by a cross-reference that lists every defined 5 on the same line as the name, the line number (or, in a few cases, numbers)
|
H A D | usertests.c | 1425 a = sbrk(0); in sbrktest() 1429 if(b != a){ in sbrktest() 1434 a = b + 1; in sbrktest() 1453 a = sbrk(0); in sbrktest() 1464 a = sbrk(0); in sbrktest() 1477 a = sbrk(0); in sbrktest() 1479 if(c != a || sbrk(0) != a + 4096){ in sbrktest() 1489 a = sbrk(0); in sbrktest() 1491 if(c != a){ in sbrktest() 1497 for(a = (char*)(KERNBASE); a < (char*) (KERNBASE+2000000); a += 50000){ in sbrktest() [all …]
|
H A D | .gdbinit.tmpl | 4 # There doesn't seem to be a good way to detect if we're in 16- or 16 # Translate the segment:offset into a physical address
|
H A D | fs.c | 24 #define min(a, b) ((a) < (b) ? (a) : (b)) argument 375 uint addr, *a; in bmap() local 390 a = (uint*)bp->data; in bmap() 391 if((addr = a[bn]) == 0){ in bmap() 392 a[bn] = addr = balloc(ip->dev); in bmap() 412 uint *a; in itrunc() local 423 a = (uint*)bp->data; in itrunc() 425 if(a[j]) in itrunc() 426 bfree(ip->dev, a[j]); in itrunc()
|
H A D | entry.S | 8 # Using GRUB 2, you can boot xv6 from a file stored in a
|
H A D | mp.c | 31 mpsearch1(uint a, int len) in mpsearch1() argument 35 addr = P2V(a); in mpsearch1()
|
H A D | bootasm.S | 39 # Switch from real to protected mode. Use a bootstrap GDT that makes 68 # If bootmain returns (it shouldn't), trigger a Bochs
|
H A D | README | 5 xv6 is a re-implementation of Dennis Ritchie's and Ken Thompson's Unix 7 but is implemented for a modern x86-based multiprocessor using ANSI C. 48 will need to install a cross-compiler gcc suite capable of producing
|
H A D | swtch.S | 6 # a struct context, and save its address in *old.
|
H A D | mmu.h | 91 #define PGROUNDDOWN(a) (((a)) & ~(PGSIZE-1)) argument
|
H A D | kernel.ld | 44 * symbols, because the convention started before there was a
|
H A D | LICENSE | 7 a copy of this software and associated documentation files (the
|
H A D | runoff | 3 echo This script takes a minute to run. Be patient. 1>&2
|
H A D | gdbutil | 175 EXPR must evaluate to a descriptor value. It can be of any C type. 227 output/a $arg3 << 16 | $arg2
|