Commit Graph

130 Commits

Author SHA1 Message Date
d4157c7e24 improve README.md and LICENSE.md 2017-01-14 12:39:05 +01:00
87a1c929ea doc: draft coding style 2017-01-12 23:19:02 +01:00
0de2dfc95b kernel: fix /dev/swap and stats -m 2017-01-12 00:41:14 +01:00
4e8d766fe8 doc: drafted hacking/overview.md 2017-01-12 00:41:01 +01:00
d1cc947cd9 kernel: fix fd mode print in devproc 2017-01-12 00:39:50 +01:00
e93aafc028 qa: build everything with -Werror 2017-01-12 00:38:56 +01:00
51d12f1f34 kernel: fix #0/brk/ qid (it's a special directory, not a special file) 2017-01-09 00:44:01 +01:00
01562d4ddb qa: rfork(RFNAMEG) on tests that are going to rfork(RFNOMNT) later 2017-01-06 23:04:04 +01:00
6872a8483b devtools: continuous-build.sh: restore toolchain cache in travis-ci 2017-01-06 18:49:12 +01:00
d7d987c746 devtools: update 2017-01-06 03:48:47 +01:00
a8e2247e20 kernel: drop SysNsec references from syscall() 2017-01-06 01:40:04 +01:00
4676c65a3d kernel: move nsec to libc 2017-01-06 00:56:22 +01:00
2508de40ea kernel: move sysdup to libc 2017-01-06 00:56:22 +01:00
882e33b091 qa: fix warnings 2017-01-06 00:54:42 +01:00
c342234d74 kernel: print faults to process standard error 2017-01-06 00:54:04 +01:00
410e6d1fa1 cflags: set --sysroot=$JEHANNE 2017-01-06 00:53:25 +01:00
d24c2b3606 rio: fix wloc call to sys/call 2017-01-04 23:34:44 +01:00
e8562ff537 cmd/pict: import 9front's graphical tools 2017-01-03 22:31:09 +01:00
890f126abc kernel: fix usb after changing OREAD/OWRITE values
OREAD and OWRITE are used as array indexes assuming that OREAD was zero
and OWRITE was one. Thus each related allocation reserved just 2 slot and
even Ep struct in usb.h reserved just 2 int for toggles.

Since OREAD is now 1 and OWRITE is 2 we have to allocate/reserve 3 slot
as long as we use them as array indexes (which we could change in the future).

Unfortunately this means we waste the index zero in those arrays that will
always be unused. This also means that, to loop in such arrays we must begin
with OREAD as index zero is always empty.

PRO-MEMORIA: if/when we introduce the walk() syscall, OSTAT might turn useless.
In that case we might remove it and thus consider to move back OREAD/OWRITE
to 0/1 respectively (which might or might not be a good idea, to be analyzed).
2017-01-03 01:27:08 +01:00
c1eb65b35e kernel: move null and zero from #c to #0 2017-01-03 01:27:08 +01:00
8e7f47c743 kernel/boot: bind #0 wherever #c is bound 2017-01-03 01:27:08 +01:00
ac15346de7 kernel: make #0/pid, #0/ppid and #0/pgrpid readable 2017-01-03 01:27:07 +01:00
da77086023 mount: update dev9p name (#9 instead of #M) 2016-12-31 17:19:40 +01:00
ba80ac9649 lib/namespace: bind #0 to /dev 2016-12-31 00:46:34 +01:00
37541724d0 kernel: add #0/brk and move brk_() to libc 2016-12-31 00:43:02 +01:00
0bbd79e0a5 kernel: waitdebugger on lapictimerset if apic->div == 0 2016-12-26 02:18:19 +01:00
71ea62eb5b rm -e prints the return value of remove syscalls
Some devices return useful info on specific file remove (eg #0/pid, #0/ppid...)
so we need a tool to get such info.

	rm -e '#0/pid' '#0/ppid'
	#0/pid 65
	#0/ppid 59
2016-12-26 02:18:19 +01:00
31aa85b01a kernel: move pgrpid to devself 2016-12-26 02:18:19 +01:00
66373243bd libc: rewrite access() 2016-12-26 02:18:06 +01:00
b862596737 kernel&all: create() syscall only sends Tcreate
In Plan9 the create syscall fallback on a open(OTRUNC) if the
path provided already exists. This is actually a common requirement
as most programs (editors, cat...) simply requires that a file is
there and is empty, and doesn't care overwriting existing contents
(note that this is particularily sensible with something like fossil).

In Jehanne the application is responsible of actually handle this
"file exists" error but libc provides ocreate() to mimic the Plan9
behaviour. Note that ocreate introduce a subtle race too: the path
is walked several times if the file exists, thus it could misbehave
on concurrent namespace changes. However I guess this is not going to
happen often enough to care now.

NOTE we will probably address this rare race too, with a more drammatic change
to syscalls: a new walk() syscall that will provide an unopen fd.
2016-12-24 21:25:20 +01:00
0c094289e6 9P2000: give a name to NinepMsgType to ease debug 2016-12-24 21:25:05 +01:00
c30fb72b82 kernel: allow negative lengths in pwrite 2016-12-24 21:24:49 +01:00
ca05868e4d kernel: use #9 instead of #M in /proc/n/ns 2016-12-24 21:24:28 +01:00
b2ffd8ceaa continuous-build: run QA tests on travis-ci 2016-12-15 22:47:24 +01:00
99855d60d6 kernel: move chdir to libc using devself/devproc
Added wdir to devself and devproc:

- read '#0/wdir' to get the working directory of the calling process
  NOTE that a read(fd, nil, -1) will return the negated length
  of the working directory, just in case you want to
  allocate the memory required

- read '/proc/n/wdir' to know the working directory of process n
  (read(fd, nil, -1) still returns the negated length)

- write '#0/wdir' to change the working directory of the calling process
  NOTE: no offset is allowed and the provided string must
  be null terminated

- write '/proc/n/wdir' to change the working directory of process n
  NOTE: no offset is allowed and the provided string must
  be null terminated; moreover if another process change the working
  directory change during the write, the current process will
  receive an error.

In libc updated getwd() and chdir().
Also modified pwd to get advantage of the new file.

To test, run /arch/amd64/qa/kern/wdir.rc or simply try

	% pwd
	/usr/glenda
	% echo -n /tmp > /proc/$pid/wdir
        % pwd
        /tmp
        % cat '#0/wdir' && echo
        /tmp

The expected use cases for wdir in devproc are rio and acme.

Also, note that we could theoretically remove the cd builtin
from rc and simply implement it as a rc function.
We don't do that to preserve rc portability to other OS.
2016-12-15 22:42:01 +01:00
c6de6b66e9 kernel: introduce devself
Devself provides to each process access to its own structures.

So far it contains four files:

- pid
- ppid
- pipes	used to implement pipe(2)
- segments used to implement segattach, segdetach and segfree
2016-12-11 01:26:08 +01:00
f52a185030 decouple Jehanne from 9P2000 (as much as needed)
Jehanne is going to use a new file protocol, but Plan 9 is really
coupled with 9P2000.

Renamed fcall.h as 9P2000.h and introduced specific constants such
as NP_OREAD, NP_OWRITE and so on, so that we can use different values
in the kernel and new protocol.

Renamed devmnt to devninep, since it's actually a device serving 9P2000
file systems.

Also, fixed 9P2000 support in Jehanne, that was broken with the introduction
of OSTAT.
2016-12-06 23:01:45 +01:00
bbb375a585 kernel: return long from file related syscalls 2016-11-30 20:18:45 +01:00
a9745e02c5 kernel: in Proc defined syscallerr to hold the return value of failing syscalls 2016-11-30 01:07:45 +01:00
bb58ca33aa Revert "cfg/startup: start as terminal"
This reverts commit 0117b7d6b2.
2016-11-29 23:13:24 +01:00
0117b7d6b2 cfg/startup: start as terminal 2016-11-29 21:02:54 +01:00
9bceb6b04e startup/terminal: fix NDBFILE path and start rio 2016-11-29 20:50:14 +01:00
488106eaac cmd/ms: read #P/ps2mouse in a char (not in an int)
After the removal of dumb push in crt0 (commit 929014ebca5c738d3854758326de7abfb77c1ef1)
the first byte of the c integer is not zeroed anymore (which is correct).

But since ms.c reads and bit-match a single byte in c, when it's an int some test success/fail
due to the state of the unused bytes.

This makes the mouse turn crazy.

So we turn it into a char, so that bitmasks and tests work as expected.
2016-11-29 20:42:24 +01:00
52777e21ab kernel: devdraw: use sys->ticks instead of m->ticks in drawactive() 2016-11-29 20:41:55 +01:00
4e7138384f Update LICENSE.md
Right now, Jehanne has 3 different ancestors: Plan9-9k, 9front and Harvey.
2016-11-27 00:47:01 +01:00
026a096440 .travis.yml: cov-configure --compiler x86_64-jehanne-gcc 2016-11-27 00:17:10 +01:00
3b16cffc0e .travis.yml: cov-configure --template 2016-11-27 00:10:19 +01:00
e5df8f0731 .travis.yml: cov-configure as build_command_prepend 2016-11-27 00:05:34 +01:00
2bd1f728f9 coverity-scan.sh: cov-configure during prepare 2016-11-26 23:44:49 +01:00
adb551a3af coverity-scan.sh: cov-configure gcc cross-compiler 2016-11-26 23:24:32 +01:00