go-akaros.git
4 years agoUpdate scripts for changes to default env vars akaros origin/akaros current
Kevin Klues [Fri, 13 Nov 2015 19:53:30 +0000 (11:53 -0800)]
Update scripts for changes to default env vars

The ROSROOT environment variable ha snow been renamed to AKAROS_ROOT.
Moreover, we now use the $AKAROS_ROOT/mnt folder for our 9p mount
instead of $GOOT/misc/akaros/mnt. Other tools use this same mount point,
so we can now share it.

Change-Id: Ib8add1aebaa51bebe857c0c3f6238a5801023b0a
Signed-off-by: Kevin Klues <klueska@cs.berkeley.edu>
4 years agoAdd script for initial setup with gerrit
Kevin Klues [Thu, 12 Nov 2015 22:53:28 +0000 (14:53 -0800)]
Add script for initial setup with gerrit

Change-Id: I4b57e63807b0163a64d165b3c09fe9b57ddae8c9
Signed-off-by: Kevin Klues <klueska@cs.berkeley.edu>
4 years agoChange #c to #cons for akaros random device
Kevin Klues [Tue, 27 Oct 2015 01:21:29 +0000 (18:21 -0700)]
Change #c to #cons for akaros random device

4 years agoAdd support for SYS_OPENAT
Kevin Klues [Mon, 26 Oct 2015 23:48:10 +0000 (16:48 -0700)]
Add support for SYS_OPENAT

This also removes direct support for SYS_OPEN (which akaros no longer
supports).

4 years agoUpdate README / add make targets in go-akaros-qemu
Kevin Klues [Wed, 12 Aug 2015 21:12:34 +0000 (14:12 -0700)]
Update README / add make targets in go-akaros-qemu

5 years agoRename README -> README.md
Kevin Klues [Mon, 3 Aug 2015 21:09:12 +0000 (14:09 -0700)]
Rename README -> README.md

Now taht the README has proper markdown, rename it with a .md extension
so that it renders properly in programs that recognize that extension

5 years agoUpdate README with proper markdown syntax
Kevin Klues [Mon, 3 Aug 2015 21:09:05 +0000 (14:09 -0700)]
Update README with proper markdown syntax

5 years agoUpdate Getcwd() to match new kernel API
Kevin Klues [Tue, 28 Jul 2015 03:59:08 +0000 (20:59 -0700)]
Update Getcwd() to match new kernel API

Previously, Getcwd returned the length of the string written into the
buffer passed as a parameter (+1 to account for the '\0') character.
The new API simply returns 0 on success or -1 on failure, and it is up
to userspace to get the length of the string if needed.  This differes
from, say, Linux, but it simplifies the kernel API in favor of more
functionality pushed to userspace.

5 years agoUpdate to new kernel API with SerializeArgvEnvp
Kevin Klues [Tue, 28 Jul 2015 04:00:52 +0000 (21:00 -0700)]
Update to new kernel API with SerializeArgvEnvp

Arguments and environment variables are now passed to the kernel in a
packed structure instead of as arrays of pointers to arbitrary user
memory.

5 years agoUpdate go9pserver script
Kevin Klues [Tue, 28 Jul 2015 16:04:21 +0000 (09:04 -0700)]
Update go9pserver script

There was a bug with killing the old instance of ufs (because I was
grepping for something ambiguous), and I was missing a "-akaros-true"
flag, which makes ufs work with symlinks.

5 years agoCall to pthread_lib_init() now unnecessary
Kevin Klues [Fri, 26 Jun 2015 04:41:56 +0000 (21:41 -0700)]
Call to pthread_lib_init() now unnecessary

With new changes to akaros, pthreads are initialized via a constructor
function, so there is no need to call pthread_lib_init() explicitly.
Previously it was needed beccause of our calls to pthread_sigmask()
before our first clal to pthread_create() (where pthread_lib_init() was
being implicitly called).

5 years agoChange akaros lib paths to be in subfolders
Kevin Klues [Mon, 22 Jun 2015 21:34:26 +0000 (14:34 -0700)]
Change akaros lib paths to be in subfolders

Previously having the directory name before the file was optional. Now
it is necessary.

5 years agoUse sigsets directly instead of assuming a long
Kevin Klues [Fri, 5 Jun 2015 22:35:56 +0000 (15:35 -0700)]
Use sigsets directly instead of assuming a long

5 years agoManually merge go-1.4 commit cf622d758cd51cfa09f
Kevin Klues [Wed, 28 Jan 2015 01:22:50 +0000 (17:22 -0800)]
Manually merge go-1.4 commit cf622d758cd51cfa09f

syscall: keep allocated C string live across call to Syscall
Given:

        p := alloc()
        fn_taking_ptr(p)

p is NOT recorded as live at the call to fn_taking_ptr:
it's not needed by the code following the call.
p was passed to fn_taking_ptr, and fn_taking_ptr must keep
it alive as long as it needs it.
In practice, fn_taking_ptr will keep its own arguments live
for as long as the function is executing.

But if instead you have:

        p := alloc()
        i := uintptr(unsafe.Pointer(p))
        fn_taking_int(i)

p is STILL NOT recorded as live at the call to fn_taking_int:
it's not needed by the code following the call.
fn_taking_int is responsible for keeping its own arguments
live, but fn_taking_int is written to take an integer, so even
though fn_taking_int does keep its argument live, that argument
does not keep the allocated memory live, because the garbage
collector does not dereference integers.

The shorter form:

        p := alloc()
        fn_taking_int(uintptr(unsafe.Pointer(p)))

and the even shorter form:

        fn_taking_int(uintptr(unsafe.Pointer(alloc())))

are both the same as the 3-line form above.

syscall.Syscall is like fn_taking_int: it is written to take a list
of integers, and yet those integers are sometimes pointers.
If there is no other copy of those pointers being kept live,
the memory they point at may be garbage collected during
the call to syscall.Syscall.

This is happening on Solaris: for whatever reason, the timing
is such that the garbage collector manages to free the string
argument to the open(2) system call before the system call
has been invoked.

Change the system call wrappers to insert explicit references
that will keep the allocations alive in the original frame
(and therefore preserve the memory) until after syscall.Syscall
has returned.

Should fix Solaris flakiness.

This is not a problem for cgo, because cgo wrappers have
correctly typed arguments.

LGTM=iant, khr, aram, rlh
R=iant, khr, bradfitz, aram, rlh
CC=dvyukov, golang-codereviews, r
https://golang.org/cl/139360044

5 years agoUpdate Go on Akaros README for new busybox.
Godfrey van der Linden [Fri, 23 Jan 2015 21:29:33 +0000 (13:29 -0800)]
Update Go on Akaros README for new busybox.

The instructions use the old technique of building busybox.  Update them
for the new in-Akaros technique. Also remove all trailing whitespace.

Add test/64bit to the .gitignore. It is explicitly built in the README
and it clutters up the git state.

5 years agoAdd extra csbypass case, when port known, and host == "*"
Kevin Klues [Thu, 22 Jan 2015 18:06:59 +0000 (10:06 -0800)]
Add extra csbypass case, when port known, and host == "*"

5 years agoBypass CS when ip addr and port are already parsed
Kevin Klues [Wed, 21 Jan 2015 23:51:11 +0000 (15:51 -0800)]
Bypass CS when ip addr and port are already parsed

5 years agoUpdate go-bootstrap to match new ifconfig params
Kevin Klues [Wed, 21 Jan 2015 23:50:51 +0000 (15:50 -0800)]
Update go-bootstrap to match new ifconfig params

5 years agoFailure can not happen. But when it does, spew a lot.
Ron Minnich [Tue, 20 Jan 2015 22:43:55 +0000 (14:43 -0800)]
Failure can not happen. But when it does, spew a lot.

Signed-off-by: Ron Minnich <rminnich@google.com>
5 years agoUpdate for new toolchain
Kevin Klues [Fri, 16 Jan 2015 03:10:39 +0000 (19:10 -0800)]
Update for new toolchain

Currently there is a ghetto hack in place related to rdynamic no longer
being supported by our CXX.  We will need to fix this before trying to
push any of this to upstream go.

5 years agoShould always do the mkdir even if not doing rm
Kevin Klues [Tue, 25 Nov 2014 21:52:11 +0000 (13:52 -0800)]
Should always do the mkdir even if not doing rm

5 years agoAdd shbang for bash at the top of the script
Kevin Klues [Fri, 17 Oct 2014 19:23:52 +0000 (12:23 -0700)]
Add shbang for bash at the top of the script

5 years agoRevert "Initialize overflow of hash buckets to nil before use."
Kevin Klues [Thu, 2 Oct 2014 07:31:51 +0000 (00:31 -0700)]
Revert "Initialize overflow of hash buckets to nil before use."

With the discovery of a busted memclr function, this "fix" is no longer
needed.  The reason for the busted memory values was due to memclr
messing up, not any real logic in the code anywhere.

This reverts commit 72b09199f91fe5f94c10468c21add0a7a330f9fb.

5 years agoMake akaros specific implementation of memclr
Kevin Klues [Thu, 2 Oct 2014 07:29:25 +0000 (00:29 -0700)]
Make akaros specific implementation of memclr

The default one uses XMM registers, which we don't seem to support
properly yet.  The plan9 just segfaults for some reason, so we can't
just pull that one in either.  I just copied the akaros kernel's version
of memset in for now until we find a better solution.  At any rate, it's
better than just looping over every byte.

5 years agoUpdate semantics of time.now and runtime.nanotime
Kevin Klues [Wed, 1 Oct 2014 04:20:15 +0000 (21:20 -0700)]
Update semantics of time.now and runtime.nanotime

Nanotime only needs the time since boot, and time.now should cache the
gettimeofday call just once and use the tsc to calcualte the time from
relative to this thereafter.

5 years agoMkdir /usr and /tmp as part of go-bootstrap
Kevin Klues [Tue, 30 Sep 2014 21:26:23 +0000 (14:26 -0700)]
Mkdir /usr and /tmp as part of go-bootstrap

5 years agoApparently these generated .6 files need to be in the repo
Kevin Klues [Tue, 23 Sep 2014 20:47:25 +0000 (13:47 -0700)]
Apparently these generated .6 files need to be in the repo

5 years agoMajor cleanup of akaros fork/exec code
Kevin Klues [Wed, 17 Sep 2014 19:29:53 +0000 (12:29 -0700)]
Major cleanup of akaros fork/exec code

We now longer have any fork/exec calls at all.  We support StartProcess
directly.  We do support a direct Exec calls, but the implementation for
Exec was wrong and I fixed it as part of this commit.

One nice observation is taht we don't need the ForkLock in Akaros
because we aren't forking and don't have races with file descriptors
magically appearing / disappearing out from under us while executing a
fork/exec command.

5 years agoforkAndExec doesnt need a pipe on akaros
Kevin Klues [Wed, 17 Sep 2014 05:37:57 +0000 (22:37 -0700)]
forkAndExec doesnt need a pipe on akaros

On akaros, we don't actually perform a fork/exec combination.  On
systems taht do, a pipe was necessary to pass the error code of the
forked process back to its parent in the case that execing inside it
failed for any reason.

On akaros, we don't need this pipe at all because of the way we do the
proc_create(), proc_run() combination. Previously we were just messing
things up by opening the pipe, closing the write side immediately upon
calling forkAndExecInChild, and then closing the read side twice. The
way we were doing things were remnants of a weird combiantion of doing
things the plan9 way, the unix way, and the akaros way without much
thought.  Hopefully it's doing the right thing now aftre a little more
scrutiny.

5 years agoDouble the timeout for akaros
Kevin Klues [Sun, 14 Sep 2014 18:10:15 +0000 (11:10 -0700)]
Double the timeout for akaros

5 years agoAllow ifconfig and root scripts to take params
Kevin Klues [Sun, 14 Sep 2014 17:51:29 +0000 (10:51 -0700)]
Allow ifconfig and root scripts to take params

This requires a cahnge to the default root script in akaros.  That's
fine though.  It's more consistent the new way anyway, and I was the
only one really using it the old way.

5 years agoUpdate to README
Kevin Klues [Sun, 14 Sep 2014 17:50:53 +0000 (10:50 -0700)]
Update to README

Busybox instructions were slightly incorrect

5 years agoAdd longer timeout for akaros
Kevin Klues [Wed, 10 Sep 2014 20:17:50 +0000 (13:17 -0700)]
Add longer timeout for akaros

We need longer than a 2 minute timeout for some of the akaros tests.
This is likely due to the fact that we run the tests in quemu, but
that's the way we are doing things for now, so we need this extra slack.

5 years agoPartially revert b0a0eb0abdc48c0a0640d7b11fc1f923acd45fac
Kevin Klues [Wed, 10 Sep 2014 20:16:38 +0000 (13:16 -0700)]
Partially revert b0a0eb0abdc48c0a0640d7b11fc1f923acd45fac

Not building for akaors breaks some of the test infrastructure when
building.  We just conditionally don't run the test for akaros inside
the tests themselves (just like is being doen for plan9 as well).

5 years agoFix TestTLSServerClosesConnection test for akaros
Kevin Klues [Wed, 3 Sep 2014 04:39:23 +0000 (21:39 -0700)]
Fix TestTLSServerClosesConnection test for akaros

Introduce a scheduler yield to make sure that the go routine pulling
bytes out of the network has a chance to run before trying to make a new
request from the server. This is necessary because of the cooperative
nature of the Akaros m-thread scheduler.

5 years agoBetter error handling in queryCS for akaros
Kevin Klues [Tue, 2 Sep 2014 21:11:08 +0000 (14:11 -0700)]
Better error handling in queryCS for akaros

5 years agoCleanup childfdmap stuff a little.
Kevin Klues [Wed, 27 Aug 2014 17:42:54 +0000 (10:42 -0700)]
Cleanup childfdmap stuff a little.

Now pull the childfdmap struct from the c header file instead of
duplicating it manually.  Will make it easier to catch bugs in the
future if the interface changes (plus the more automated, the better).

5 years agoRemove unused directive
Kevin Klues [Wed, 27 Aug 2014 17:42:02 +0000 (10:42 -0700)]
Remove unused directive

We used to use a local.bash to set up our environment for building Go
for akaros.  Now everything is done thorugh a different setup, so this
if statement in this file is unneeded anymore.  It was basically a noop
now anyway.

5 years agoRemove reliance on "bytes" and "encoding/binary"
Kevin Klues [Wed, 27 Aug 2014 04:34:20 +0000 (21:34 -0700)]
Remove reliance on "bytes" and "encoding/binary"

There was a circular dependency when testing pkg/encoding/binary, so we
couldn't do things the way we were doing using these packages in
pkg/syscall.  It's fine though, the newer version is cleaner and more
intuitive in my opinion.

5 years agoMake sure CGO is turned off, post akaros build
Kevin Klues [Wed, 27 Aug 2014 04:09:44 +0000 (21:09 -0700)]
Make sure CGO is turned off, post akaros build

This is important when running the go tests with the same script (we
don't want to run the cgo tests -- at least not yet).

5 years agoFinish up forkExec calls to finall pass os/exec
Kevin Klues [Wed, 27 Aug 2014 04:03:54 +0000 (21:03 -0700)]
Finish up forkExec calls to finall pass os/exec

We now do the fd mapping and chdir stuff properly when setting up a new
process to run.  As part of this commit I also simplified how the byte
array params get passed to forkAndExecinChild.  In the future, we may
want to get rid of this call completely for akaros, as it's redundant
since we aren't even really fork/execing under the hood anyway.

5 years agochdir / fchdir now take a PID parameter
Kevin Klues [Wed, 27 Aug 2014 03:34:02 +0000 (20:34 -0700)]
chdir / fchdir now take a PID parameter

5 years agoMake all debugs go to stderr
Kevin Klues [Wed, 27 Aug 2014 03:31:14 +0000 (20:31 -0700)]
Make all debugs go to stderr

Just printing to stddout doesn't get printed when running the go tests.

5 years agoFix TestExtraFiles (sort of)
Kevin Klues [Tue, 26 Aug 2014 23:20:11 +0000 (16:20 -0700)]
Fix TestExtraFiles (sort of)

Go runtime for akaros requires the alarm service to be open, which has 2
open files, one for the timerfd, and one for its ctl.  Don't close them!
Before these are open though, another file (which is subsequently
properly closed) comes along and claims fd 3, giving the alarm service
fds 4 and 5, so we need to bump n up by 3 instead of just 2.  Doh!

5 years agoDon't PROC_DUP_FGRP, instead SYS_DUP_FDS_TO
Kevin Klues [Tue, 26 Aug 2014 21:17:14 +0000 (14:17 -0700)]
Don't PROC_DUP_FGRP, instead SYS_DUP_FDS_TO

Previously we were using the PROC_DUP_FGRP flag to the proc_create()
syscall to, telling akaros to straight up dup the fds of a parent into
the same fd numbers in the child.  We actually want to do a remapping
though, which the new SYS_DUP_FDS_TO syscall allows us to do.

5 years agoRevert stuff related to childfdmap
Kevin Klues [Tue, 26 Aug 2014 17:54:43 +0000 (10:54 -0700)]
Revert stuff related to childfdmap

Revert "os/exec: less broken implementation of fd passing"
    This reverts commit 890bd2bee7f1dc26307a8167121bdafb3f87dcc6.

Revert "Fix the constant that defines the DUP_FDS_TO system call."
    This reverts commit f7581d5820c81ef17f1241e81649825fb2f441af.

Revert "Add support for childfdmap."
    This reverts commit cea46024744a06b11114802d1e467ee0375d7d3f.

5 years agoAdd support for childfdmap.
Ronald G. Minnich [Mon, 25 Aug 2014 17:52:16 +0000 (17:52 +0000)]
Add support for childfdmap.

This actually builds. No time to see if it works.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
5 years agoFix the constant that defines the DUP_FDS_TO system call.
Ronald G. Minnich [Sun, 24 Aug 2014 19:37:51 +0000 (19:37 +0000)]
Fix the constant that defines the DUP_FDS_TO system call.

But where the heck do we get the define from?

This gets further and fails other ways.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
5 years agoThe pipe has no use in Akaros since we don't have fork.
Ronald G. Minnich [Sun, 24 Aug 2014 02:11:56 +0000 (02:11 +0000)]
The pipe has no use in Akaros since we don't have fork.

Just close it. The error return is sufficient.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
5 years agoAccidental removal from akaros in netpoll.goc
Kevin Klues [Fri, 22 Aug 2014 19:41:07 +0000 (12:41 -0700)]
Accidental removal from akaros in netpoll.goc

61a7af5a3c5e37eb651b68834d88fa9d26c2c717

5 years agoRename is done via syscall, not wstat
Kevin Klues [Fri, 22 Aug 2014 19:35:19 +0000 (12:35 -0700)]
Rename is done via syscall, not wstat

5 years agoSupport both Hw and Sw trapframes for contexts
Kevin Klues [Fri, 22 Aug 2014 19:07:55 +0000 (12:07 -0700)]
Support both Hw and Sw trapframes for contexts

The context passed to a singal may be stored in either a hardware or a
software trapframe, so wee need to make sure we extract the info from it
at the right offsets.  Since KenC doesn't support nice macro
preprocessing, we are left with this monstrosity.  Shouldn't ever change
though (or at least not often), so it's fine.

5 years agoKen asssembly reserved stack space
Kevin Klues [Fri, 22 Aug 2014 19:06:37 +0000 (12:06 -0700)]
Ken asssembly reserved stack space

Now that I understand this, do accounting right

5 years agoos/exec: less broken implementation of fd passing
Ronald G. Minnich [Wed, 20 Aug 2014 01:36:50 +0000 (01:36 +0000)]
os/exec: less broken implementation of fd passing

It's not working, but it's not working less than it was not working before.

At least child output doesn't just to go stdout. Now it goes to an unkown place.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
5 years agoAkaros: skip all tests requiring DNS and another seqpacket test
Ronald G. Minnich [Tue, 19 Aug 2014 21:40:18 +0000 (21:40 +0000)]
Akaros: skip all tests requiring DNS and another seqpacket test

We're down to 3 tests failing.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
5 years agoakaros: we don't do /etc/hosts
Ronald G. Minnich [Tue, 19 Aug 2014 21:53:43 +0000 (21:53 +0000)]
akaros: we don't do /etc/hosts

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
5 years agoAkaros: skip all tests requiring DNS and another seqpacket test
Ronald G. Minnich [Tue, 19 Aug 2014 21:40:18 +0000 (21:40 +0000)]
Akaros: skip all tests requiring DNS and another seqpacket test

We're down to 3 tests failing.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
5 years agoChmod and Fchmod are no longer direct syscalls
Kevin Klues [Fri, 15 Aug 2014 21:08:13 +0000 (14:08 -0700)]
Chmod and Fchmod are no longer direct syscalls

They are implemented in package os as specific instances of executing a
wstat. Truncate as well.

5 years agoGetwd shouldn't have a trailing slash included
Kevin Klues [Wed, 13 Aug 2014 23:34:42 +0000 (16:34 -0700)]
Getwd shouldn't have a trailing slash included

5 years agoRemove cgo calls to chmod and fchmod
Kevin Klues [Wed, 13 Aug 2014 23:02:35 +0000 (16:02 -0700)]
Remove cgo calls to chmod and fchmod

These are now implemented directly with wstat

5 years agoStop building akaros as part of file_posix.go
Kevin Klues [Wed, 13 Aug 2014 23:00:00 +0000 (16:00 -0700)]
Stop building akaros as part of file_posix.go

This means we have to move all those functions over into file_akaros.go
directly.  This is necessary to be able to use the wstat and fwsata
syscalls for their appropriate library functions.

5 years agoAdd the Wstat and Fwstat syscalls for akaros
Kevin Klues [Wed, 13 Aug 2014 22:56:40 +0000 (15:56 -0700)]
Add the Wstat and Fwstat syscalls for akaros

NOTE: passing a []byte paramter to a syscall generated via the //sys
directive causes it to actually expand to 2 parameters under the hood
when making the actual Syscall6 call.  The first is the byte array, the
second is its length.  Any subsequent arguments follow these two.

5 years agoCompile in for akaros as well as plan9
Kevin Klues [Wed, 13 Aug 2014 22:56:01 +0000 (15:56 -0700)]
Compile in for akaros as well as plan9

5 years agoAdd implementations for rename and truncate
Kevin Klues [Tue, 12 Aug 2014 17:26:59 +0000 (10:26 -0700)]
Add implementations for rename and truncate

They are not quite working yet though, because we need to get things
fixed up on the akaros side of things.

5 years agominor change to forkAndExecInChild to pass len of argv0
Ronald G. Minnich [Tue, 12 Aug 2014 20:50:43 +0000 (20:50 +0000)]
minor change to forkAndExecInChild to pass len of argv0

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
5 years agoNeed to add !akaros to list in lookup_stubs.go
Kevin Klues [Tue, 12 Aug 2014 17:10:59 +0000 (10:10 -0700)]
Need to add !akaros to list in lookup_stubs.go

5 years agoAkaros: add a user lookup package for akaros.
Ronald G. Minnich [Fri, 8 Aug 2014 22:02:38 +0000 (22:02 +0000)]
Akaros: add a user lookup package for akaros.

We're not unix, we don't yet have users, so for now,
everyone is root, uid 0, gid 0, user full name is "nanwan".

Fixes the os/user test.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
6 years agoInitialize overflow of hash buckets to nil before use.
Kevin Klues [Thu, 31 Jul 2014 16:40:01 +0000 (09:40 -0700)]
Initialize overflow of hash buckets to nil before use.

Without doing this we were getting strange segfaults for addresses down
in the 0xff00 range when dereferencing the b->overflow field in
hash_insert().

I narrowed down the problem to only occurring after reentering the
"again" loop as the result of hash_grow() invalidating the entire
hashmap.  When hash_grow() returns, h->buckets points to a completely
new region for holding buckets, but a reference to the original set of
buckets is kept in h->oldbuckets, so that entries from it can be
lazily copied out on demand. The memory for the new h->buckets seems
to have been reaped from the garbage collector (not a new mmap).

In the case when we enter the "again" loop after a hash_grow(), we end
up calling grow_work(), which calls evacuate(), which has some crazy
logic for figuring out which parts of our original bucket to copy out
from h->oldbuckets[i] to the new h->buckets[i]. This logic doesn't
seem to 0 out the overflow field of the new buckets by default.  If
the reaped memory wasn't zeroed out before handing it back to us, we
get screwed.  I'm not sure what the normal semantics for this are with
the go garbage collector.

Anyway, simply adding a few lines to the evacuate() function before
any other copying is done:

        x->overflow = nil;
        y->overflow = nil;

seems to fix the problem, and all other go tests still function as
expected -- both on linux and on akaros. Given that they don't even have
this file in the tip of their hg repo anymore, I'm committing this small
change here and moving on.

6 years agoStore the output of the rpc in a file, not a var
Kevin Klues [Wed, 23 Jul 2014 01:51:39 +0000 (18:51 -0700)]
Store the output of the rpc in a file, not a var

Previously I was storing this output in a bash variable and parsing
things from there. The problem, however, is that certaion go tests
purposefully print the '\0' character to stdout, which bash variables
silently ignore and strip from their output when echoed. This causes us
to fail at least one go test.  Creating an actual file in the file
system and always catting from there avoids this issue.

6 years agoNo need to cleanup on the server side after test.
Kevin Klues [Wed, 23 Jul 2014 01:50:40 +0000 (18:50 -0700)]
No need to cleanup on the server side after test.

6 years agonacl skips this test, and so do we now
Kevin Klues [Wed, 23 Jul 2014 01:49:36 +0000 (18:49 -0700)]
nacl skips this test, and so do we now

This test tests some various linker output, which we don't quite handle
correctly, apparently.  Netierh does nacl, though, so we punt for now.

6 years agoGet rid of -n, and just don't output anything if ""
Kevin Klues [Fri, 18 Jul 2014 00:45:29 +0000 (17:45 -0700)]
Get rid of -n, and just don't output anything if ""

Never printing the newline resulted in incorrect output when we
legitimately wanted to output something.

6 years agoAlways build the cpio archive, whether build or test
Kevin Klues [Thu, 17 Jul 2014 23:21:39 +0000 (16:21 -0700)]
Always build the cpio archive, whether build or test

6 years agoJust dont set CGO_ENABLED when running tests for akaros
Kevin Klues [Thu, 17 Jul 2014 23:20:54 +0000 (16:20 -0700)]
Just dont set CGO_ENABLED when running tests for akaros

6 years agoEcho output from go_akaros_${GOARCH} with -n
Kevin Klues [Thu, 17 Jul 2014 23:12:27 +0000 (16:12 -0700)]
Echo output from go_akaros_${GOARCH} with -n

Some tests in run.bash  were failing because they were supposed to have
no output at all, but bash was interpreting the newline at the end of
the output as some valid output.  Passing -n to echo removes this.

6 years agoAdd syscalls for chmod, fchmod, rename, and fchdir
Kevin Klues [Thu, 17 Jul 2014 22:41:51 +0000 (15:41 -0700)]
Add syscalls for chmod, fchmod, rename, and fchdir

fchdir and rename are currently still stubbed out (they aren't even
implemented in akaros glibc yet!), but functionality for chmod and
fchmod is now in place based on the new parlib calls for
chmod()/fchmod() and errno()/errstr().

6 years agoAdd parlib calls for chmod() and fchmod()
Kevin Klues [Thu, 17 Jul 2014 22:33:37 +0000 (15:33 -0700)]
Add parlib calls for chmod() and fchmod()

Normally I make direct syscalls rather than going through libc, but the
implementations for chmod and fchmod are now based on the new wstat
syscall, and are a bit more complicated than the other syscalls we've
implemented so far. It's just easier to make the direct libc calls and
not deal with all the convD2M stuff in go at all.

6 years agoAdd ability to get errno and errstr from parlib
Kevin Klues [Thu, 17 Jul 2014 22:28:22 +0000 (15:28 -0700)]
Add ability to get errno and errstr from parlib

6 years agoMove func definitions so I know they've been ported
Kevin Klues [Thu, 17 Jul 2014 20:38:55 +0000 (13:38 -0700)]
Move func definitions so I know they've been ported

There are comments denoting different parts of the file as to whether
I've put effort into porting the functions over to work with akaros or
not.  Anything below the comment that says "not ported yet" we can't
really rely on being correct yet.

6 years agoFix symlink and readsymlink
Ronald G. Minnich [Wed, 16 Jul 2014 04:23:25 +0000 (21:23 -0700)]
Fix symlink and readsymlink

path/pathfile still breaks in test but is less broken.
I'm one for tonight.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
6 years agoRemove extranous text. Oops
Kevin Klues [Wed, 16 Jul 2014 00:57:31 +0000 (17:57 -0700)]
Remove extranous text.  Oops

6 years agoSkip this for akaros
Ronald G. Minnich [Wed, 16 Jul 2014 00:35:41 +0000 (17:35 -0700)]
Skip this for akaros

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
6 years agoPass the crypto tls test
Kevin Klues [Wed, 16 Jul 2014 00:24:27 +0000 (17:24 -0700)]
Pass the crypto tls test

Windows, plan9, and akaros all use the dialChannel function from
dial_gen.go which returns a net.errTimeout error when timing out.
The tls dialTimeout test was failing because the error string returned
by dialChannel for these OSs doesnt contain the string "timed out" as it
will under all error types for other OSs.  On windows, plan9, and akaros
we need to look for either "timed out" or "i/o timeout" as valid timeout
strings.

Consequently, this test is only run when not passing "-short" to the "go
test" command, which is why these OSs pass the tests from all.bash
(since they are run with "-short" set).

6 years agoProperly size the string. Requires the corresponding fix to Akaros.
Ronald G. Minnich [Wed, 16 Jul 2014 00:12:38 +0000 (17:12 -0700)]
Properly size the string. Requires the corresponding fix to Akaros.

6 years agoOnly remove the EXEC, not the BUILD_DIR\
Kevin Klues [Tue, 15 Jul 2014 23:38:17 +0000 (16:38 -0700)]
Only remove the EXEC, not the BUILD_DIR\

Concurrent rms and mkdirs of the same directory fuck shit up.

6 years agoCorrect implementation of getwd.
Ronald G. Minnich [Tue, 15 Jul 2014 22:36:47 +0000 (15:36 -0700)]
Correct implementation of getwd.

TODO: we check for err AND n < 0. I bet the second test
is not needed.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
6 years agoSkip this on akaros as well as nacl.
Ronald G. Minnich [Tue, 15 Jul 2014 22:03:29 +0000 (15:03 -0700)]
Skip this on akaros as well as nacl.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
6 years agoSkip a test we can't do. Also, be more informative on something that "can not fail"
Ronald G. Minnich [Tue, 15 Jul 2014 21:41:52 +0000 (14:41 -0700)]
Skip a test we can't do. Also, be more informative on something that "can not fail"

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
6 years agoSKip akaros on these tests
Ronald G. Minnich [Tue, 15 Jul 2014 21:03:53 +0000 (14:03 -0700)]
SKip akaros on these tests

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
6 years agoPush the 'exit' call into the rpc call, not distributed throughout
Kevin Klues [Tue, 15 Jul 2014 20:31:13 +0000 (13:31 -0700)]
Push the 'exit' call into the rpc call, not distributed throughout

6 years agoChange default port to 5555 and copy all scripts from akaros-bin
Kevin Klues [Tue, 15 Jul 2014 20:30:23 +0000 (13:30 -0700)]
Change default port to 5555 and copy all scripts from akaros-bin

6 years agoDon't delete the contents of the mntdir by default
Kevin Klues [Tue, 15 Jul 2014 20:27:27 +0000 (13:27 -0700)]
Don't delete the contents of the mntdir by default

6 years agoUpdate when getting the src for the 9pserver
Kevin Klues [Tue, 15 Jul 2014 20:27:00 +0000 (13:27 -0700)]
Update when getting the src for the 9pserver

6 years agoNo need to copy the cpio file, and abstract port number out
Kevin Klues [Tue, 15 Jul 2014 20:26:02 +0000 (13:26 -0700)]
No need to copy the cpio file, and abstract port number out

6 years agoSupport building gotests for distribution in $GOROOT/misc/akaros/mnt
Kevin Klues [Tue, 15 Jul 2014 20:22:55 +0000 (13:22 -0700)]
Support building gotests for distribution in $GOROOT/misc/akaros/mnt

Also includes support script on the akaros side for grabbing them and
extracting them from the mount

6 years agoGo testing: add some exit commands
Ronald G. Minnich [Thu, 10 Jul 2014 01:24:58 +0000 (18:24 -0700)]
Go testing: add some exit commands

For less-intelligent netcats or netcats written in Go that
don't do shutdown()

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
6 years agoCompiling and running
Kevin Klues [Mon, 7 Jul 2014 22:51:34 +0000 (15:51 -0700)]
Compiling and running

6 years agoMerge tag 'go1.3' into akaros
Kevin Klues [Mon, 7 Jul 2014 22:11:29 +0000 (15:11 -0700)]
Merge tag 'go1.3' into akaros

Conflicts:
.hgtags
VERSION
doc/go_spec.html
misc/makerelease/makerelease.go
src/run.bash

6 years agoAdd PROC_DUP_FGRP flag and remove erroneous files
Kevin Klues [Wed, 2 Jul 2014 00:39:04 +0000 (17:39 -0700)]
Add PROC_DUP_FGRP flag and remove erroneous files

6 years agoDon't pass -c to netcat
Kevin Klues [Tue, 1 Jul 2014 23:50:25 +0000 (16:50 -0700)]
Don't pass -c to netcat

We should probably detect if this is necessary for different versions
(because Ron's version of netcat apparently needs it), but punting for
now.  Ron will deal with it locally.