akaros.git
7 years agoKthread infrastructure
Barret Rhoden [Thu, 21 Oct 2010 23:42:00 +0000 (16:42 -0700)]
Kthread infrastructure

Note this does not run on sparc yet - someone will need to write those
functions in k/a/sparc/trap.c.  Read the documentation for more info.

7 years agox86: Stores core 0's stack as a KVA
Barret Rhoden [Mon, 18 Oct 2010 20:27:39 +0000 (13:27 -0700)]
x86: Stores core 0's stack as a KVA

Instead of a virtual address (like 0xbfc00000).

7 years agoFixes usages of lock_page()
Barret Rhoden [Mon, 18 Oct 2010 06:04:35 +0000 (23:04 -0700)]
Fixes usages of lock_page()

We had a bunch of extra unlock_page()s floating around ever since we
pushed the unlocking into readpage().  Don't expect it to stay around
much longer either.

7 years agoChangeable kernel stacks
Barret Rhoden [Sun, 17 Oct 2010 07:02:38 +0000 (00:02 -0700)]
Changeable kernel stacks

We can now set and query the default kernel stack (the one you'll trap
in to).  On x86, this info is saved in the TSS.  On sparc, it's in an
array.  If that array gets a lot of cache traffic, we'll need to put it
in per_cpu_info, which is a minor pain.

7 years agoFixes a bug with sparc's atomic_sub_and_test()
Barret Rhoden [Fri, 15 Oct 2010 01:14:56 +0000 (18:14 -0700)]
Fixes a bug with sparc's atomic_sub_and_test()

Careful with negative (or large) numbers with these tricksy atomics!
Also touches up a couple other things that were discovered while messing
with sparc.

7 years agox86: decouples the GDT/TS/ETC from the stack
Barret Rhoden [Thu, 14 Oct 2010 20:21:43 +0000 (13:21 -0700)]
x86: decouples the GDT/TS/ETC from the stack

Also allows us to find the per-core TSS quickly.

7 years agoBlock responses are interrupt driven (on x86)
Barret Rhoden [Thu, 14 Oct 2010 19:34:08 +0000 (12:34 -0700)]
Block responses are interrupt driven (on x86)

We'll need a little bit of work to make this work on sparc.

7 years agoFixes a minor bug in sys_halt_core()
Barret Rhoden [Wed, 13 Oct 2010 21:19:25 +0000 (14:19 -0700)]
Fixes a minor bug in sys_halt_core()

We need to make sure the alarm is turned off, and we don't have an
arch-independent one-shot timer (SPAAAAAAAAAAAAAAAAAAAAAAAARC!).
Wonder if this helped muck with things in the old x264 tests...

7 years agoBlock requests come with a completion method
Barret Rhoden [Wed, 13 Oct 2010 20:07:35 +0000 (13:07 -0700)]
Block requests come with a completion method

breq_submit_request() doesn't require you sleep on the breq, but since
it is common (to both callers!) we provide helpers for it.  This also
splits up the usage of lock_page() to both block on IO as well as block
on waiting for a page to be ready (blocking on someone else's IO).

7 years agoCleaned up naming conventions in blockdev
Barret Rhoden [Wed, 13 Oct 2010 18:28:02 +0000 (11:28 -0700)]
Cleaned up naming conventions in blockdev

Also put a check for block 0.  There are probably some legitimate uses,
but not yet.

7 years agoext2_create()
Barret Rhoden [Wed, 13 Oct 2010 01:46:43 +0000 (18:46 -0700)]
ext2_create()

We can now create ext2 files (alloc their inodes, etc) and insert them
in directories (and possibly grow the directory).

7 years agoext2_get_ino_metablock() will allocate blocks
Barret Rhoden [Wed, 13 Oct 2010 01:17:39 +0000 (18:17 -0700)]
ext2_get_ino_metablock() will allocate blocks

If there isn't a block already for ino_block, it will allocate and 0
one, similar to what goes on in mappage and readpage (just smoother,
since it's in the blockdev buffer cache).

7 years agoFixes bug with ext2_readdir()
Barret Rhoden [Wed, 13 Oct 2010 01:15:42 +0000 (18:15 -0700)]
Fixes bug with ext2_readdir()

It was dropping some items near the end of directories (since not all
dirents are 8 + 256 bytes long).

7 years agoClarifies how to refcnt with the page cache
Barret Rhoden [Mon, 11 Oct 2010 18:43:29 +0000 (11:43 -0700)]
Clarifies how to refcnt with the page cache

7 years agoIndividually manages buffers in the buffer cache
Barret Rhoden [Sat, 9 Oct 2010 01:42:42 +0000 (18:42 -0700)]
Individually manages buffers in the buffer cache

Check the docs, expect this to change (issues with refcnting and how we
can rip an individual block out of the buffer cache).

The main point of this is to make sure that PGSIZE worth of buffers are
*not* pulled in at the same time in the blockdev's buffer cache, since
they all are not necessarily metadata blocks.

7 years agoFixes ext2 lookup bug
Barret Rhoden [Wed, 6 Oct 2010 01:22:52 +0000 (18:22 -0700)]
Fixes ext2 lookup bug

You could match on example.txt with example.txtttttt, since lookup
stopped caring after the number of chars in the real file name.

7 years agoExt2 directory operations use the page cache
Barret Rhoden [Wed, 6 Oct 2010 00:50:08 +0000 (17:50 -0700)]
Ext2 directory operations use the page cache

7 years agoApplies FD flags per file desc, not per file
Barret Rhoden [Tue, 5 Oct 2010 23:49:18 +0000 (16:49 -0700)]
Applies FD flags per file desc, not per file

Was causing stderr messages to be ignored for programs spawned by
busybox.  (O_CLOEXEC on a duped FD of stderr before forking).

7 years agoAllocates blocks for files ending un-PG-aligned
Barret Rhoden [Tue, 5 Oct 2010 23:12:46 +0000 (16:12 -0700)]
Allocates blocks for files ending un-PG-aligned

Side note: stat() should return the ideal blocksize to use in file IO,
not the size of the blocks reported.  The size of "blocks" (and
i_blocks) is 512B.  man 2 stat for details.

7 years agoExt2 grows files and inode tables on demand
Barret Rhoden [Mon, 4 Oct 2010 06:11:17 +0000 (23:11 -0700)]
Ext2 grows files and inode tables on demand

7 years agoExt2 file seeking
Barret Rhoden [Mon, 4 Oct 2010 05:51:47 +0000 (22:51 -0700)]
Ext2 file seeking

7 years agoConvenience wrapper to start busybox's shell
Barret Rhoden [Sat, 2 Oct 2010 01:00:13 +0000 (18:00 -0700)]
Convenience wrapper to start busybox's shell

7 years agoExt2 block allocation
Barret Rhoden [Sat, 2 Oct 2010 00:46:10 +0000 (17:46 -0700)]
Ext2 block allocation

Untested outside the targets block group, etc.

7 years agoExt2: can read files from the page cache
Barret Rhoden [Thu, 30 Sep 2010 07:34:19 +0000 (00:34 -0700)]
Ext2: can read files from the page cache

Maps BHs to pages, reads the page, etc.  Can't fill in holes or extend a
file yet.  make_request() can handle multiple BHs too.

7 years agoExt2 uses the page cache for block metadata
Barret Rhoden [Wed, 29 Sep 2010 01:56:21 +0000 (18:56 -0700)]
Ext2 uses the page cache for block metadata

This is a cool commit - everything just worked (or seemed to), including
the untested readpage().  Just say it has a page mapping, then call
pm_load_page(), and you get an incref'd page back.

7 years agoBlock requests consist of buffer heads
Barret Rhoden [Wed, 29 Sep 2010 00:11:45 +0000 (17:11 -0700)]
Block requests consist of buffer heads

Compared to just a start position and length.  This will allow
submitting multiple (possibly unrelated) blocks in one request, and
simplifies sleeping when we potentially want to submit several requests
at once.

7 years agoConverts page_map for bdev usage
Barret Rhoden [Tue, 28 Sep 2010 22:33:09 +0000 (15:33 -0700)]
Converts page_map for bdev usage

Both inodes and blockdevs now have page mappings.  The block_readpage is
untested (and unused).

7 years agoChanged readpage() to not require a file
Barret Rhoden [Tue, 28 Sep 2010 20:41:31 +0000 (13:41 -0700)]
Changed readpage() to not require a file

It's just about the page mapping, not about a file.

7 years agoFixed gcc build issue
Barret Rhoden [Mon, 27 Sep 2010 21:02:14 +0000 (14:02 -0700)]
Fixed gcc build issue

Some systems are pickier than others about ghetto usages of patch.

7 years agoFixes Makeconfig bug
Barret Rhoden [Mon, 27 Sep 2010 18:15:05 +0000 (11:15 -0700)]
Fixes Makeconfig bug

7 years agoBuffer heads to track page mappings -> block num
Barret Rhoden [Fri, 24 Sep 2010 19:55:31 +0000 (12:55 -0700)]
Buffer heads to track page mappings -> block num

Just for the page mapping so far (no other IO uses it).

7 years agoFixes bug with radix_delete()
Barret Rhoden [Fri, 24 Sep 2010 07:10:41 +0000 (00:10 -0700)]
Fixes bug with radix_delete()

Some minor issues still, which we'll have to sort when we delete the
whole tree.  Either way works...

7 years agoFixes page reference counting wrt to upage_alloc()
Barret Rhoden [Thu, 23 Sep 2010 23:44:06 +0000 (16:44 -0700)]
Fixes page reference counting wrt to upage_alloc()

upage_alloc() returns a reference counted page.  page_insert() and
friends will incref it when it stores the reference.  When you are done
using the struct page * that upage_alloc() returned, you must decref.
Just like other pointers and objects.

7 years agoCleaned up page_free()
Barret Rhoden [Thu, 23 Sep 2010 22:19:22 +0000 (15:19 -0700)]
Cleaned up page_free()

Removed it, actually, putting its functionality in page_release(), and
removing the few places that called it directly.  The way to free a page
is to decref it, not to call page_free() (or release).  This might
change when we get a decent buddy allocator.

We'll keep __page_decref() around for a while; it exists to optimize
bulk page freeing (adding to the page free list).

7 years agoRemoved some unused page functions
Barret Rhoden [Thu, 23 Sep 2010 21:51:23 +0000 (14:51 -0700)]
Removed some unused page functions

Also gutted the unmaintained shared page syscall.  It will need a
rewrite given the latest kernel functions, whenever we get around to
needing it.

7 years agoUses kref for struct page
Barret Rhoden [Thu, 23 Sep 2010 21:47:45 +0000 (14:47 -0700)]
Uses kref for struct page

Some ghettoness, due to the way upage_alloc works.

7 years agoFixes icache_put on creation and KFS refcounting
Barret Rhoden [Thu, 16 Sep 2010 00:55:10 +0000 (17:55 -0700)]
Fixes icache_put on creation and KFS refcounting

KFS decrefs its pinned-path on rmdir/unlink, and doesn't drop a ref when
parsing the cpio.

7 years agoDentry cache pruning function
Barret Rhoden [Thu, 16 Sep 2010 00:24:02 +0000 (17:24 -0700)]
Dentry cache pruning function

Ideally, this will be called whenever the kernel realizes it is running
low on memory or when it proactively wants to flush unused (or at least
just negative) dentries.

Also, this replaces sys/queue.h with a more recent BSD one.

7 years agoFixes TLS for statically linked apps in _M mode
Barret Rhoden [Wed, 15 Sep 2010 02:14:41 +0000 (19:14 -0700)]
Fixes TLS for statically linked apps in _M mode

7 years agoFixed sparc compiling
Barret Rhoden [Wed, 15 Sep 2010 02:09:52 +0000 (19:09 -0700)]
Fixed sparc compiling

7 years agoRevised coding and development policies
Barret Rhoden [Tue, 14 Sep 2010 17:55:44 +0000 (10:55 -0700)]
Revised coding and development policies

7 years agormdir() can't remove mountpoints
Barret Rhoden [Mon, 13 Sep 2010 23:57:17 +0000 (16:57 -0700)]
rmdir() can't remove mountpoints

7 years agoInode cache
Barret Rhoden [Sat, 11 Sep 2010 02:43:49 +0000 (19:43 -0700)]
Inode cache

Much easier than the dentry cache...  Which should tell you something
about the relative difficulty of different kref models.

Incidentally, these caches are necessary, at least for the in-use
objects, so that multiple lookups get the same object.  imagine having an
open file, while some other thread tries a lookup.  Without a dentry
cache, you'd get different in-memory objects for the same path.  Without
the inode cache, you'd get different objects for the same disk file if
you came in via different hard links.

7 years agoDentry cache
Barret Rhoden [Fri, 10 Sep 2010 23:58:20 +0000 (16:58 -0700)]
Dentry cache

This is pretty hefty, and shows some of the issues associated with the
'cached kref'.

7 years agoext2_dealloc_inode(), clarifies dealloc vs delete
Barret Rhoden [Wed, 8 Sep 2010 01:37:24 +0000 (18:37 -0700)]
ext2_dealloc_inode(), clarifies dealloc vs delete

7 years agoReaddir fixes, ext2_readdir()
Barret Rhoden [Wed, 8 Sep 2010 00:18:03 +0000 (17:18 -0700)]
Readdir fixes, ext2_readdir()

Ext2 directories can now be read / ls'd.  Note we are leaking inodes.

This also decouples d_off from the implementation of generic_dir_read(),
such that it's an FS-internal hint.  Also fixes a couple bugs and allows
"fs ls" to cross mount points.

7 years agoPushes the empty dir check into fs->rmdir()
Barret Rhoden [Mon, 6 Sep 2010 04:07:36 +0000 (21:07 -0700)]
Pushes the empty dir check into fs->rmdir()

7 years agoreaddir() now reports . and ..
Barret Rhoden [Mon, 6 Sep 2010 03:50:25 +0000 (20:50 -0700)]
readdir() now reports . and ..

Change was only to KFS, and also has the root ("/") dentry track itself
as its parent.

7 years agoFixed a dir's i_nlink to track only child dirs
Barret Rhoden [Mon, 6 Sep 2010 02:07:51 +0000 (19:07 -0700)]
Fixed a dir's i_nlink to track only child dirs

And not child files.  I didn't make up the rules.

7 years agoMonitor FS commands query all superblocks
Barret Rhoden [Sat, 4 Sep 2010 00:59:21 +0000 (17:59 -0700)]
Monitor FS commands query all superblocks

7 years agoext2: lookup() and read_ino_block()
Barret Rhoden [Sat, 4 Sep 2010 00:23:34 +0000 (17:23 -0700)]
ext2: lookup() and read_ino_block()

Note the read_ino_block() is completely untested for anything requiring
any levels of indirection (files larger than 12KB).

7 years agoext2: alloc_ and read_inode()
Barret Rhoden [Thu, 2 Sep 2010 22:41:20 +0000 (15:41 -0700)]
ext2: alloc_ and read_inode()

Also keeps the memory copy of the block group descriptor table around
(along with the disk SB).

7 years agoMounts ext2
Barret Rhoden [Wed, 1 Sep 2010 20:01:12 +0000 (13:01 -0700)]
Mounts ext2

Mounts the ext2 FS from a block device (at /mnt in KFS).  We have only
stubs for the FS-specific files, so nothing will work.

7 years agoBlock layer and ext2 headers
Barret Rhoden [Wed, 1 Sep 2010 00:41:00 +0000 (17:41 -0700)]
Block layer and ext2 headers

This adds a non-blocking block layer, suitably only for ramdisks
(make_request() just does the block driver part).  This also adds the
first ext2 bits.  It'll look for an image file formatted with ext2 (no
disk partitions or anything.  Or cells).

7 years agoRemoved ancient useless file
Barret Rhoden [Mon, 30 Aug 2010 18:05:12 +0000 (11:05 -0700)]
Removed ancient useless file

It was bothering me when I tab-complete for kern/include/ext2-whatever.

7 years agoEndian conversion functions
Barret Rhoden [Mon, 30 Aug 2010 00:42:47 +0000 (17:42 -0700)]
Endian conversion functions

7 years agoFixes a bug with ptsname
Barret Rhoden [Thu, 2 Sep 2010 23:56:32 +0000 (16:56 -0700)]
Fixes a bug with ptsname

Turns out there was some stale object files sitting around between
builds.

7 years agoFixes bug in close_all_files()
Barret Rhoden [Tue, 24 Aug 2010 22:49:03 +0000 (15:49 -0700)]
Fixes bug in close_all_files()

7 years agoFixes bug in spinlock_debug
Barret Rhoden [Tue, 24 Aug 2010 22:14:03 +0000 (15:14 -0700)]
Fixes bug in spinlock_debug

It's possible to call procinfo on a process that never ran (and thus
never set a call-site).

7 years agoFixed file insertion of stdin/stdout/stderr
Barret Rhoden [Tue, 24 Aug 2010 22:06:28 +0000 (15:06 -0700)]
Fixed file insertion of stdin/stdout/stderr

Fork clones, so we don't want to bother inserting for those.  If we did,
we could run into issues with programs that dup then close the original
FDs.  This fix handles that and is reasonable enough.

7 years agosys_read() from /dev/stdin
Barret Rhoden [Tue, 24 Aug 2010 20:37:50 +0000 (13:37 -0700)]
sys_read() from /dev/stdin

Via the readline, used by the monitor.  As a pleasant side effect,
readline and monitor are less ghetto.

7 years agosys_fcntl() supports dup
Barret Rhoden [Tue, 24 Aug 2010 18:59:02 +0000 (11:59 -0700)]
sys_fcntl() supports dup

Fixes a bug in fcntl too, not that anyone uses it.

7 years agoFixes path_lookup() for "/" and LOOKUP_PARENT
Barret Rhoden [Tue, 24 Aug 2010 06:24:33 +0000 (23:24 -0700)]
Fixes path_lookup() for "/" and LOOKUP_PARENT

You can't do that lookup.  It was returning "/", as if it was the
parent.  Now, if you try that lookup, you'll get an error.  There might
be ways to trigger it that we aren't covering yet - the nd->last.name is
getting set by whoever was in a parental role, but link_path_walk() is
tricky.

This patch also fixes up do_file_open() a bit - overall it's a bit
clearer and can handle a lookup for "/" (no need to get the parent if
you can open it directly).

7 years agoFile mode stored in i_mode
Barret Rhoden [Tue, 24 Aug 2010 04:55:42 +0000 (21:55 -0700)]
File mode stored in i_mode

This is what stat and glibc expect, so we do it in the kernel now,
instead of mucking with i_type.  The use of the macros makes this much
nicer anyways.

7 years agobin_run programs can take arguments
Barret Rhoden [Tue, 24 Aug 2010 00:22:44 +0000 (17:22 -0700)]
bin_run programs can take arguments

7 years ago/dev/stdout support via a devfs
Barret Rhoden [Tue, 24 Aug 2010 00:03:50 +0000 (17:03 -0700)]
/dev/stdout support via a devfs

It's not a real FS - just KFS entries that have their f_op overriden.
It's a nice helper so processes can treat the stds as files.  /dev/stdin
is there, but doesn't do anything yet.

7 years agoSyscall tracing improvements
Barret Rhoden [Mon, 23 Aug 2010 20:47:40 +0000 (13:47 -0700)]
Syscall tracing improvements

The tracer now outputs the call's name and records the arguments.

7 years agosys_setuid() and sys_getuid() (XCC)
Barret Rhoden [Mon, 23 Aug 2010 19:30:07 +0000 (12:30 -0700)]
sys_setuid() and sys_getuid() (XCC)

The syscalls don't actually do anything, but it allows processes to
think it worked.  The other option would be to have glibc just lie about
it, but we might do something with these calls in the future.

Rebuild your cross compiler if you want these functions.

7 years agoGlibc networking support (XCC)
Barret Rhoden [Mon, 23 Aug 2010 07:33:45 +0000 (00:33 -0700)]
Glibc networking support (XCC)

Glibc now builds its network-support libraries and subdirs.  It wasn't
before, leading to some ugly hacks elsewhere.  While ROS doesn't support
the networking system calls (lots of stubs will just fail, many
silently), at least some codes will be able to compile and eventually
we'll be able to add in the networking support we need.

This also adds some Documentation about how to work with the glibc
build system we have.  Further documentation about glibc/gcc and all of
that is still a TODO: kevin/andrew.

P.S. Rebuild your cross compiler.

7 years agoFixes MIN, MAX #including
Barret Rhoden [Mon, 23 Aug 2010 07:03:09 +0000 (00:03 -0700)]
Fixes MIN, MAX #including

Glibc has its own, in sys/param.h.

7 years agoAdds sys_mkdir() and sys_rmdir() (XCC)
Barret Rhoden [Sat, 21 Aug 2010 01:09:25 +0000 (18:09 -0700)]
Adds sys_mkdir() and sys_rmdir() (XCC)

Rebuild your cross-compiler.

Adds mkdir and rmdir, and has children incref their parent dir's nlink
count.  There are races with the nlink, and in general with concurrent
operations on the paths and objects.

Also unifies error handling styles in many of the do_whatever VFS
functions.

7 years agosys_chmod()
Barret Rhoden [Fri, 20 Aug 2010 00:15:33 +0000 (17:15 -0700)]
sys_chmod()

We don't use the mode for anything, but you can set it now!  Huzzah!

7 years agoTouched up testing functions
Barret Rhoden [Thu, 19 Aug 2010 23:56:01 +0000 (16:56 -0700)]
Touched up testing functions

The test_random_fs() is just a dumping ground for interactive tests that
I had sitting around in init.c.  Feel free to turn these into real
tests, or ones that panic on failure but are otherwise quiet and
side-effect free.

7 years agosys_umask()
Barret Rhoden [Thu, 19 Aug 2010 23:34:40 +0000 (16:34 -0700)]
sys_umask()

Too bad we don't use the masks or modes for much of anything yet.

7 years agosys_getcwd()
Barret Rhoden [Thu, 19 Aug 2010 23:27:31 +0000 (16:27 -0700)]
sys_getcwd()

Testers, feel free to check out the two ERANGE paths.  As a side note,
the kernel does not yet have a max on the size of the buffers it
allocates on a user's behalf...

7 years agosys_chdir()
Barret Rhoden [Thu, 19 Aug 2010 21:53:56 +0000 (14:53 -0700)]
sys_chdir()

Also fixes up some dentry refcounting issues.

7 years agosys_unlink()
Barret Rhoden [Thu, 19 Aug 2010 19:47:35 +0000 (12:47 -0700)]
sys_unlink()

Note that this isn't fully testable yet, since KFS pins all dentries
forever, which also means our {dentry,inode}_release paths are mostly
unused.  Eagle-eyed readers should know when those functions are called.

7 years agoMonitor function to show inodes
Barret Rhoden [Thu, 19 Aug 2010 19:45:10 +0000 (12:45 -0700)]
Monitor function to show inodes

Also fixes refcounting for the root inode.

7 years agoHard-links, via sys_link()
Barret Rhoden [Thu, 19 Aug 2010 02:23:54 +0000 (19:23 -0700)]
Hard-links, via sys_link()

7 years agoreaddir() and readdir_r() (XCC)
Barret Rhoden [Wed, 18 Aug 2010 05:50:32 +0000 (22:50 -0700)]
readdir() and readdir_r() (XCC)

We're currently allowing processes to read() directory FDs, in part
because that is how it was already.  The alternative is to pull in the
glibc stuff related to how Linux does their getdents(), and write that
syscall for ROS.  We'll see how programs really expect readdir() to work
(man 3 readdir, not man 2 readdir).

This patch also brings about per-filetype file_operations, which has
been on the radar/considered for a while.  Right now, they are just used
for having a different read method (and no write method) for
directories.

Rebuild your cross compiler if you want to use the readdir() functions.

7 years agosys_fcntl()
Barret Rhoden [Tue, 17 Aug 2010 22:53:27 +0000 (15:53 -0700)]
sys_fcntl()

Doesn't support DUPing yet, and probably will never support any of the
more painful POSIX things, like file locking.

7 years agox86: Fixes bug preventing the kernel from trapping
Barret Rhoden [Tue, 17 Aug 2010 17:15:48 +0000 (10:15 -0700)]
x86: Fixes bug preventing the kernel from trapping

You should only proc_restartcore() on a process tf, and the kernel
should return naturally.

7 years agoFixes bug with mprotect() and munmap()
Barret Rhoden [Tue, 17 Aug 2010 08:14:39 +0000 (01:14 -0700)]
Fixes bug with mprotect() and munmap()

This was hidden by the lack of TLB shootdowns (the old TLB entry was
being used still, so the faulty/extra mprotects weren't taking effect.

7 years ago__proc_tlb_shootdown() works for _S
Barret Rhoden [Tue, 17 Aug 2010 06:54:37 +0000 (23:54 -0700)]
__proc_tlb_shootdown() works for _S

It was silently doing nothing for quite a while for _S processes.

7 years agoPrograms think they are named after their symlink
Barret Rhoden [Tue, 17 Aug 2010 06:39:24 +0000 (23:39 -0700)]
Programs think they are named after their symlink

Instead of being named after their file_name(), they get their name from
the path (or whatever is in argv[0]).  Really only applicable to the
manager-spawned processes, but something userspace needs to keep in
mind.

7 years agoload_elf() zeros the BSS via the kernel mapping
Barret Rhoden [Tue, 17 Aug 2010 06:37:02 +0000 (23:37 -0700)]
load_elf() zeros the BSS via the kernel mapping

This needed to be done, will help with making PRIVATE mappings CoW, and
temporarily hid the effects of another bug.

7 years agoAllow the killing of PROC_CREATED processes
Barret Rhoden [Tue, 17 Aug 2010 02:56:14 +0000 (19:56 -0700)]
Allow the killing of PROC_CREATED processes

Might be issues with this, not heavily tested.

7 years agox86 page faults know about the reason for the PF
Barret Rhoden [Tue, 17 Aug 2010 02:16:23 +0000 (19:16 -0700)]
x86 page faults know about the reason for the PF

I love how when I track down a weird bug, I find a TODO at the end.

7 years agoSyscalls for symlink management (XCC)
Barret Rhoden [Tue, 17 Aug 2010 00:55:40 +0000 (17:55 -0700)]
Syscalls for symlink management (XCC)

Rebuild your cross compiler.

7 years agoKFS initrd supports symlinks
Barret Rhoden [Mon, 16 Aug 2010 17:42:40 +0000 (10:42 -0700)]
KFS initrd supports symlinks

7 years agoSymlinks!
Barret Rhoden [Sun, 15 Aug 2010 23:06:48 +0000 (16:06 -0700)]
Symlinks!

The VFS can handle them, for the most part.  KFS can make them, but not
from the CPIO yet.

7 years agofork/exec check for the current_tf
Barret Rhoden [Tue, 17 Aug 2010 18:55:58 +0000 (11:55 -0700)]
fork/exec check for the current_tf

These syscalls (and others) don't make sense remotely.  These two need
some sense of a current_tf (or more hackery) to work remotely (ARCs).
Hasn't been tested, etc.

7 years agoSorted out proc refcounting with ARCs
Barret Rhoden [Tue, 17 Aug 2010 18:31:49 +0000 (11:31 -0700)]
Sorted out proc refcounting with ARCs

7 years agoFixes when we add a new proc to the pidhash
Barret Rhoden [Tue, 17 Aug 2010 18:09:51 +0000 (11:09 -0700)]
Fixes when we add a new proc to the pidhash

Not all code paths use proc_create(), etc.

7 years agoSyncs up Makeconfig and the Makelocal.template
Barret Rhoden [Tue, 17 Aug 2010 17:26:02 +0000 (10:26 -0700)]
Syncs up Makeconfig and the Makelocal.template

There are still some _CONFIG_s that are unused in the kernel, but might
be used in the future (KFS), or that should go away entirely (ghetto
networking hacks).

7 years agoCheck for null location before setting errno and retval.
David Zhu [Mon, 16 Aug 2010 22:09:56 +0000 (15:09 -0700)]
Check for null location before setting errno and retval.

7 years agofixing sparc-specific compilation issues.
David Zhu [Sun, 15 Aug 2010 04:30:02 +0000 (21:30 -0700)]
fixing sparc-specific compilation issues.

7 years agoFixing syscalls to new seterrno and setretval.
David Zhu [Wed, 11 Aug 2010 23:17:12 +0000 (16:17 -0700)]
Fixing syscalls to new seterrno and setretval.

7 years agoMake errno and return value work for async syscalls.
David Zhu [Wed, 11 Aug 2010 06:08:23 +0000 (23:08 -0700)]
Make errno and return value work for async syscalls.

Added a level of indirection so that sparc/i386/async call can
change where to put errno and return value at run time.
Widespread seterrno changes forthcoming after merge.

7 years agoremove some unnecessary printing in the arsc server.
David Zhu [Fri, 6 Aug 2010 00:05:39 +0000 (17:05 -0700)]
remove some unnecessary printing in the arsc server.