Commit Graph

387 Commits

Author SHA1 Message Date
Giacomo Tesio f9b2e9aba4 kernel: generalize awake
Awake can now interrupt several blocking syscalls (even
during note handling).

Among others, it can interrupt await, pread and pwrite.

It cannot interrupt several others for different reasons:

- awake cannot be interrupted by awake;
- syscalls like remove and create can be used for kernel comunication
  and it would be hard to know if the effect occurred in the
  receiving fs if they were interrupted;
- other syscalls do not need awake since they just provide access
  to kernel infos (eg seek or fd2path)

NOTE: awakes registered before a note cannot occur during the note
handling and will be deferred till the next call to noted.
2017-05-15 00:05:59 +02:00
Giacomo Tesio 79f8204766 kern: move tsemaquire to userspace (given a generalized awake) 2017-05-12 11:13:19 +02:00
Giacomo Tesio 46664994d4 libposix: fix usleep 2017-05-12 11:13:08 +02:00
Giacomo Tesio aa4172a1de libposix: document timers 2017-05-08 23:46:19 +02:00
Giacomo Tesio a3791c88f7 libposix: add usleep 2017-05-08 23:45:46 +02:00
Giacomo Tesio d62ca1162f Merge branch 'libposix-new-signals' of https://bitbucket.org/tesio/jehanne into libposix-new-signals 2017-05-08 22:54:34 +02:00
Giacomo Tesio edc116ef45 libposix: documented new signal machinery 2017-05-08 00:43:35 +02:00
Giacomo Tesio 48ea61ab9c newlib: more tests for signals 2017-05-08 00:36:04 +02:00
Giacomo Tesio 333d5dcbcd Merge branch 'master' into libposix-new-signals 2017-05-07 19:44:47 +02:00
Giacomo Tesio 1263399c0b qa: check devproc start/stop ctl msg 2017-05-07 19:32:55 +02:00
Giacomo Tesio b08218529d devproc: can't wait for up to stop 2017-05-06 16:03:16 +02:00
Giacomo Tesio 8d5eb5914f libposix: fix default_signal_disposition 2017-05-06 13:33:08 +02:00
Giacomo Tesio da0381a213 libposix: big refactor of signal handling 2017-05-05 19:01:18 +02:00
Giacomo Tesio ecd6dddf86 qa/kern: ensure awake in signal handlers is not affected by sleep 2017-05-04 19:55:55 +02:00
Giacomo Tesio 0b193807b6 qa: ensure awake works correctly in signal handlers
Jehanne's notes (like Plan9 ones) are not reentrant.
Thus an alarm can not be used to interrupt a syscall in a note handler.

Awake instead works properly also in a note handler.
2017-05-04 01:07:32 +02:00
Giacomo Tesio bd8ced55f1 qa: fix CID 168327 and CID 168326 2017-05-04 00:22:50 +02:00
Giacomo Tesio ec8d3427b7 qa: fix newlib test (CID 168329 and CID 168328) 2017-05-04 00:17:19 +02:00
Giacomo Tesio 6480cd0293 newlib: fix kill and signal trampoline 2017-05-03 23:37:43 +02:00
Giacomo Tesio d29859684b libposix: complete POSIX_signal_execute 2017-05-03 03:02:56 +02:00
Giacomo Tesio 3b35743a64 qa: nested_note checks that notes are enqueued in kernel 2017-05-03 02:23:26 +02:00
Giacomo Tesio bd5063666f libposix: introduce POSIX_signal_execute and PosixSignalDisposition enum 2017-05-03 01:14:53 +02:00
Giacomo Tesio 47573e2122 newlib: add 201-signals (broken as no default action occurs in newlib) 2017-05-02 01:15:10 +02:00
Giacomo Tesio cf974abe0e libposix: (almost working) waitpid 2017-05-02 00:57:18 +02:00
Giacomo Tesio be7c067507 newlib: fix qa_exit_translator in qa tests 2017-05-02 00:18:52 +02:00
Giacomo Tesio 8c33c921b4 libposix: draft waitpid (still broken) 2017-05-01 23:57:05 +02:00
Giacomo Tesio 690a89d3ce newlib: add test for waitpid (to implement) 2017-05-01 12:03:49 +02:00
Giacomo Tesio d49ba60dcb newlib: implement sleep and pipe 2017-04-30 17:01:45 +02:00
Giacomo Tesio bd22e5154c qa: wait for child in newlib/200-signals 2017-04-30 16:55:13 +02:00
Giacomo Tesio 14934ee51f libposix: sleep and pipe 2017-04-30 16:49:50 +02:00
Giacomo Tesio 3707eaece6 libposix: simplify kill 2017-04-30 16:49:01 +02:00
Giacomo Tesio d0b9ae9cac newlib: first test for signals 2017-04-29 00:33:54 +02:00
Giacomo Tesio b9304545f6 newlib: fix open_translator 2017-04-28 23:15:38 +02:00
Giacomo Tesio 28539041d0 newlib: one more test (fread) 2017-04-28 23:15:03 +02:00
Giacomo Tesio 2481b01515 qa: introduce runners and more tests for newlib
For each test, if a script exists with the same name of the test
plus the .runner suffix, the runner is run instead of the test.

As a first example qa/lib/newlib/testsuite/atexit is run by
qa/lib/newlib/testsuite/atexit.runner.

These .runner scripts allow more complex checks of the side effects
generated by the test.
2017-04-28 00:47:12 +02:00
Giacomo Tesio ac33157c37 kern: usbehcipc.c fix CID 155940: Out-of-bounds write 2017-04-25 16:07:47 +02:00
Giacomo Tesio 80a8501c05 kern/ip/gre: fix CID 156224: Uninitialized scalar variable 2017-04-25 15:53:20 +02:00
Giacomo Tesio ea6f34f4f7 kern: mark pexit() as noreturn
Since pexit() calls sched() it wont return to the caller.
Should fix

- CID 155655: Missing break in switch
- CID 155672: Missing break in switch
2017-04-24 09:55:45 +02:00
Giacomo Tesio 5c8200b9da qa: simple infrastructure to test output expectations 2017-04-24 00:06:33 +02:00
Giacomo Tesio 7ab8fecd80 newlib: qa checks from RedHat tests suite 2017-04-23 23:50:20 +02:00
Giacomo Tesio b9acacfcc8 coverity-scan.sh: set CPATH to workaround cross-compiling issues 2017-04-23 14:04:35 +02:00
Giacomo Tesio ac1176d9ff newlib: set CPATH for coverity too 2017-04-23 13:36:49 +02:00
Giacomo Tesio bd3884cc9c README.md: git submodule update --depth 1 (as newlib has a lot of history) 2017-04-23 12:25:10 +02:00
Giacomo Tesio e0901def6d continuous-build.sh: set CPATH to workaround cross-compiling issues 2017-04-22 18:57:25 +02:00
Giacomo Tesio 2c9e1fa260 newlib: fix typo 2017-04-22 18:30:06 +02:00
Giacomo Tesio c983cc4c59 newlib: set CPATH to cross compiler's includes 2017-04-22 18:25:31 +02:00
Giacomo Tesio 860f67ca6e newlib: travis-ci madness... why? why? 2017-04-22 18:06:31 +02:00
Giacomo Tesio 03fabf2031 newlib: travis-ci madness... why? 2017-04-22 18:05:04 +02:00
Giacomo Tesio b5fc12ec37 .travis.yml: try gcc-4.9 2017-04-22 17:47:51 +02:00
Giacomo Tesio c159c88b4d newlib: travis-ci madness 2017-04-22 17:46:49 +02:00
Giacomo Tesio 12c928f7f0 newlib: fix host configuration 2017-04-22 14:35:11 +02:00