Hacked I/O system so that ports set/clear their
fd's CLOEXEC bit when they become unrevealed/revealed.
This commit is contained in:
parent
dfda637610
commit
aed6c163b8
|
@ -7,12 +7,7 @@
|
|||
;;; These constants are not likely to change from stdio lib to stdio lib,
|
||||
;;; but you need to check when you do a port.
|
||||
|
||||
(define-syntax define-bufpols
|
||||
(syntax-rules ()
|
||||
((define-bufpols form ...)
|
||||
(begin (define-enum-constant "bufpol" . form) ...))))
|
||||
|
||||
(define-bufpols
|
||||
(define-enum-constants bufpol
|
||||
(block 0) ; _IOFBF
|
||||
(line 1) ; _IOLBF
|
||||
(none 2)) ; _IONBF
|
||||
|
|
|
@ -5,14 +5,9 @@
|
|||
;;; These are the correct values for BSD4.4-Lite-based systems
|
||||
;;; such as NetBSD 1.0 and FreeBSD 2.0.
|
||||
|
||||
(define-syntax define-errnos
|
||||
(syntax-rules ()
|
||||
((define-errnos form ...)
|
||||
(begin (define-enum-constant "errno" . form) ...))))
|
||||
|
||||
(define errno/2big 7) ; 2big is not a legit Scheme symbol. Lose, lose.
|
||||
|
||||
(define-errnos
|
||||
(define-enum-constants errno
|
||||
;; POSIX:
|
||||
(perm 1) ; Operation not permitted
|
||||
(noent 2) ; No such file or directory
|
||||
|
|
|
@ -2,12 +2,7 @@
|
|||
;;; Copyright (c) 1993 by Olin Shivers.
|
||||
;;; Copyright (c) 1994 by Brian D. Carlstrom
|
||||
|
||||
(define-syntax define-open-flags
|
||||
(syntax-rules ()
|
||||
((define-opens form ...)
|
||||
(begin (define-enum-constant "open" . form) ...))))
|
||||
|
||||
(define-open-flags
|
||||
(define-enum-constants open
|
||||
;; POSIX
|
||||
(read #x0000)
|
||||
(write #x0001)
|
||||
|
@ -16,8 +11,8 @@
|
|||
(append #x0008) ; set append mode
|
||||
|
||||
;; BSD4.4-Lite
|
||||
(shlock #x0010) ; open with shared file lock
|
||||
(exlock #x0020) ; open with exclusive file lock
|
||||
(shared-lock #x0010) ; open with shared file lock
|
||||
(exclusive-lock #x0020) ; open with exclusive file lock
|
||||
(async #x0040) ; signal pgrep when data ready
|
||||
(fsync #x0080) ; synchronus writes
|
||||
|
||||
|
@ -27,60 +22,34 @@
|
|||
(exclusive #x0800) ; error if already exists
|
||||
(no-control-tty #x0000)) ; don't assign controlling terminal
|
||||
|
||||
|
||||
|
||||
(define open/access-mask
|
||||
(bitwise-ior open/read
|
||||
(bitwise-ior open/write open/read+write)))
|
||||
|
||||
;;;; fcntl
|
||||
;;;; Rough sketch only. Will define a separate proc for each fcntl command.
|
||||
;
|
||||
;;;; fcntl commands
|
||||
;dup
|
||||
;
|
||||
;get-flags ; Only gives close-on-exec bit.
|
||||
;set-flags
|
||||
;
|
||||
;get-status ; Returns open flags + get-status flags (below)
|
||||
;set-status ; Can set: append, sync, async, nbio, nonblocking, no-delay
|
||||
;
|
||||
;get-lock
|
||||
;set-lock
|
||||
;nonblocking-set-lock
|
||||
;
|
||||
;get-record-lock
|
||||
;set-record-lock
|
||||
;
|
||||
;get-owner ; Not POSIX
|
||||
;set-owner ; Not POSIX
|
||||
;remote-set-lock ; Not POSIX
|
||||
;nonblocking-remote-set-lock ; Not POSIX
|
||||
;remote-get-lock ; Not POSIX
|
||||
;
|
||||
;;;; Flags
|
||||
;
|
||||
;close-on-exec ; get-flags
|
||||
;
|
||||
;async ; get-status
|
||||
;no-delay ; get-status
|
||||
;nbio ; get-status
|
||||
;
|
||||
;;; These are internal; they are not part of the supported scsh interface.
|
||||
;;; fcntl() commands
|
||||
(define-enum-constants fcntl
|
||||
(dup-fdes 0) ; F_DUPFD
|
||||
(get-fdes-flags 1) ; F_GETFD
|
||||
(set-fdes-flags 2) ; F_SETFD
|
||||
(get-status-flags 3) ; F_GETFL
|
||||
(set-status-flags 4) ; F_SETFL
|
||||
(get-owner 5) ; F_GETOWN (Not POSIX)
|
||||
(set-owner 6) ; F_SETOWN (Not POSIX)
|
||||
(get-record-lock 7) ; F_GETLK
|
||||
(set-record-lock-noblock 8) ; F_SETLK
|
||||
(set-record-lock 9)) ; F_SETLKW
|
||||
|
||||
(define fcntl/close-on-exec 1)
|
||||
;;; fcntl fdes-flags (F_GETFD)
|
||||
|
||||
(define fcntl/dupfd 0)
|
||||
(define fcntl/get-fd-flags 1)
|
||||
(define fcntl/set-fd-flags 2)
|
||||
(define fcntl/get-file-flags 3)
|
||||
(define fcntl/set-file-flags 4)
|
||||
(define fcntl/get-owner 5) ; Not POSIX
|
||||
(define fcntl/set-owner 6) ; Not POSIX
|
||||
(define fcntl/get-record-lock 7) ; F_GETLK
|
||||
(define fcntl/set-record-lock-noblock 8) ; F_SETLK
|
||||
(define fcntl/set-record-lock 9) ; F_SETLKW
|
||||
(define fdflags/close-on-exec 1)
|
||||
|
||||
(define lock/read 1) ; F_RDLCK
|
||||
(define lock/release 2) ; F_UNLCK
|
||||
(define lock/write 3) ; F_WRLCK
|
||||
;;; fcntl status-flags (F_GETFL)
|
||||
;;; Mostly, these are OPEN/... flags, like OPEN/APPEND.
|
||||
;;; (define fdstatus/... ...)
|
||||
|
||||
;;; fcntl lock values.
|
||||
|
||||
(define-enum-constants lock
|
||||
(read 1) ; F_RDLCK
|
||||
(release 2) ; F_UNLCK
|
||||
(write 3)) ; F_WRLCK
|
||||
|
|
|
@ -2,12 +2,7 @@
|
|||
;;; Copyright (c) 1994 by Olin Shivers.
|
||||
;;; Copyright (c) 1994 by Brian D. Carlstrom.
|
||||
|
||||
(define-syntax define-signals
|
||||
(syntax-rules ()
|
||||
((define-signals form ...)
|
||||
(begin (define-enum-constant "signal" . form) ...))))
|
||||
|
||||
(define-signals
|
||||
(define-enum-constants signal
|
||||
;; POSIX
|
||||
(hup 1) ; hangup
|
||||
(int 2) ; interrupt
|
||||
|
@ -71,3 +66,9 @@
|
|||
(usr1 30) ; user defined signal 1
|
||||
(usr2 31) ; user defined signal 2
|
||||
)
|
||||
|
||||
(define signals-ignored-by-default
|
||||
(list signal/alrm signal/hup signal/int signal/quit ; These are
|
||||
signal/term signal/usr1 signal/usr2 ; Posix.
|
||||
signal/info signal/prof signal/vtalrm ; These are
|
||||
signal/xcpu signal/xfsz signal/io)) ; BSD-specific.
|
||||
|
|
Loading…
Reference in New Issue