Commit Graph

346 Commits

Author SHA1 Message Date
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
d1c042fed2 .travis.yml: ./hacking/coverity-scan.sh prepare 2016-11-26 22:01:11 +01:00
4ec23f355f travis: fix paths for caches 2016-11-26 17:55:57 +01:00
a3344f856d coverity: use ./hacking/coverity-scan.sh 2016-11-26 16:28:18 +01:00
c4e4c3efae travis-ci: turn on cache for cross-compiler
Added cross-compiler to $PATH in continuous-build.sh
and enabled sudo in .travis.yml.

NOTES:

- travis is unable to update submodules pointing to commits out of their master branch,
  so if you push to devtools, you need to push into master branch or your build will be broken
- travis caches conflicts with submodule managements, so we use tmp/toolchain instead of
  hacking/cross/toolchain in .travis.yml and continuous-build.sh will mv binaries as required.
2016-11-26 14:21:33 +01:00
48c932fdb8 .travis.yml: do not invoke buildtools.sh here 2016-11-26 04:39:40 +01:00
a48a2c1937 .travis.yml: do not build drawterm 2016-11-26 04:34:13 +01:00
7cafb3e53a hacking/buildtools.sh: show progress 2016-11-26 04:29:39 +01:00
38aca7a581 first usable version of kernel and commands
After an year of hard work, this is a first "usable" version of Jehanne.
2016-11-26 03:49:29 +01:00
391252a059 Merge branch 'wip'
Conflicts:
	README.md
2016-01-06 18:04:50 +01:00
8251935b51 README.md: fix typo 2016-01-06 18:03:13 +01:00
51b7a95bb7 devtools: update ufs (quick hack that works) 2015-12-23 21:51:57 +01:00
d07a6b1e39 update devtools 2015-12-23 10:45:29 +00:00
8f6b365eb0 travis-ci: improved coverity integration 2015-12-23 10:07:01 +00:00
83993a6d0a update devtools 2015-12-23 01:24:56 +01:00
97fbabc93f travis-ci: integrate coverity 2015-12-23 01:04:09 +01:00
b029ce94b9 update devtools 2015-12-23 01:02:08 +01:00
817858bedc update devtools 2015-12-23 00:32:12 +01:00
ee4eab6b32 README.md: add coverity badge 2015-12-22 21:44:07 +01:00
16c5baeb78 add .gitignore 2015-12-22 17:21:27 +01:00
a59e9035ba add build.json 2015-12-22 17:21:13 +01:00
3925b61fa6 libc: initial import from Harvey
Note that libc is what distinguish "native" software from "non-native"
in Jehanne: further C libraries can be ported to Jehanne, but this libc
will remain the main building block of the system.

Also note that a few files have not been ported from Harvey:

	- 9sys/pushtls.c
	- port/rijndael.c
	- port/rijndael.tbl
	- port/sha2.c

Pushtls.c depends on libmp and libsec so libc is not the appropriate place
for it. The other three will be moved to libsec.
2015-12-22 11:55:44 +00:00
e4ebd7eace travis-ci: add first .travis.yml 2015-12-22 11:49:55 +00:00
bbf498c38e Added root folders mnt/ pkgs/ and tmp/ 2015-12-22 11:46:42 +00:00
fc42b02a28 Add arch/amd64
PRO MEMORIA: in arch/amd64/include/ureg.h the commented registers are preserved.

They were removed at 6ab2e16c9f
but apparently the es register is used by vesavga (386 version) in both Plan9, 9front and 9atom.
2015-12-22 11:40:34 +00:00
a634ef3b34 README.md: fix submodule initialization 2015-12-22 10:52:39 +00:00
1a83ae4cc5 devtools: update ref 2015-12-22 10:49:17 +00:00
b5fcad4e29 Add devtools (as submodule) in hacking/ 2015-12-22 10:38:12 +00:00
6929baf0de README.md: expand overview 2015-12-22 10:33:57 +00:00
42eb23aea8 Add LICENCE.md and doc/license 2015-12-22 10:31:50 +00:00
5515ca30a5 Let's start with README.md 2015-12-21 22:36:41 +01:00