Added generic configuration.
This commit is contained in:
parent
d31eccb605
commit
a9d80cba6d
|
@ -0,0 +1,12 @@
|
||||||
|
;;; Flags that control buffering policy.
|
||||||
|
;;; Copyright (c) 1993 by Olin Shivers. See file COPYING.
|
||||||
|
|
||||||
|
;;; These are for the SET-PORT-BUFFERING procedure, essentially a Scheme
|
||||||
|
;;; analog of the setbuf(3S) stdio call. We use the actual stdio values.
|
||||||
|
;;; These constants are not likely to change from stdio lib to stdio lib,
|
||||||
|
;;; but you need to check when you do a port.
|
||||||
|
|
||||||
|
(define-enum-constants bufpol
|
||||||
|
(block 0) ; _IOFBF
|
||||||
|
(line #o200) ; _IOLBF
|
||||||
|
(none 4)) ; _IONBF
|
|
@ -0,0 +1,133 @@
|
||||||
|
;;; Errno constant definitions.
|
||||||
|
;;; Copyright (c) 1993 by Olin Shivers. See file COPYING.
|
||||||
|
|
||||||
|
;;; These are the correct values for my SparcStation.
|
||||||
|
|
||||||
|
(define errno/2big 7) ; 2big is not a legit Scheme symbol. Lose, lose.
|
||||||
|
|
||||||
|
(define-enum-constants errno
|
||||||
|
;; POSIX:
|
||||||
|
(perm 1) ; Operation not permitted
|
||||||
|
(noent 2) ; No such file or directory
|
||||||
|
(srch 3) ; No such process
|
||||||
|
(intr 4) ; Interrupted function call
|
||||||
|
(io 5) ; Input/output error
|
||||||
|
(nxio 6) ; No such device or address
|
||||||
|
; (2big 7) ; Arg list too long
|
||||||
|
(noexec 8) ; Exec format error
|
||||||
|
(badf 9) ; Bad file descriptor
|
||||||
|
(child 10) ; No child processes
|
||||||
|
(again 11) ; Resource temporarily unavailable
|
||||||
|
(nomem 12) ; Not enough space
|
||||||
|
(acces 13) ; Permission denied
|
||||||
|
(fault 14) ; Bad address
|
||||||
|
(notblk 15) ; Block device required
|
||||||
|
(busy 16) ; Resource busy
|
||||||
|
(exist 17) ; File exists
|
||||||
|
(xdev 18) ; Improper link
|
||||||
|
(nodev 19) ; No such device
|
||||||
|
(notdir 20) ; Not a directory
|
||||||
|
(isdir 21) ; Is a directory
|
||||||
|
(inval 22) ; Invalid argument
|
||||||
|
(nfile 23) ; Too many open files in system
|
||||||
|
(mfile 24) ; Too many open files
|
||||||
|
(notty 25) ; Inappropriate I/O control operation
|
||||||
|
(xtbsy 26) ; Text file busy
|
||||||
|
(fbig 27) ; File too large
|
||||||
|
(nospc 28) ; No space left on device
|
||||||
|
(spipe 29) ; Invalid seek
|
||||||
|
(rofs 30) ; Read-only file system
|
||||||
|
(mlink 31) ; Too many links
|
||||||
|
(pipe 32) ; Broken pipe
|
||||||
|
|
||||||
|
;; POSIX:
|
||||||
|
;; math software
|
||||||
|
(dom 33) ; Domain error
|
||||||
|
(range 34) ; Result too large
|
||||||
|
|
||||||
|
;; non-blocking and interrupt i/o
|
||||||
|
(wouldblock 35) ; Operation would block
|
||||||
|
(inprogress 36) ; Operation now in progress
|
||||||
|
(already 37) ; Operation already in progress
|
||||||
|
|
||||||
|
;; ipc/network software
|
||||||
|
|
||||||
|
;; argument errors
|
||||||
|
(notsock 38) ; Socket operation on non-socket
|
||||||
|
(destaddrreq 39) ; Destination address required
|
||||||
|
(msgsize 40) ; Message too long
|
||||||
|
(prototype 41) ; Protocol wrong type for socket
|
||||||
|
(noprotoopt 42) ; Protocol not available
|
||||||
|
(protonosupport 43) ; Protocol not supported
|
||||||
|
(socktnosupport 44) ; Socket type not supported
|
||||||
|
(opnotsupp 45) ; Operation not supported on socket
|
||||||
|
(pfnosupport 46) ; Protocol family not supported
|
||||||
|
(afnosupport 47) ; Address family not supported by protocol family
|
||||||
|
(addrinuse 48) ; Address already in use
|
||||||
|
(addrnotavail 49) ; Can't assign requested address
|
||||||
|
|
||||||
|
;; operational errors
|
||||||
|
(netdown 50) ; Network is down
|
||||||
|
(netunreach 51) ; Network is unreachable
|
||||||
|
(netreset 52) ; Network dropped connection on reset
|
||||||
|
(connaborted 53) ; Software caused connection abort
|
||||||
|
(connreset 54) ; Connection reset by peer
|
||||||
|
(nobufs 55) ; No buffer space available
|
||||||
|
(isconn 56) ; Socket is already connected
|
||||||
|
(notconn 57) ; Socket is not connected
|
||||||
|
(shutdown 58) ; Can't send after socket shutdown
|
||||||
|
(toomanyrefs 59) ; Too many references: can't splice
|
||||||
|
(timedout 60) ; Connection timed out
|
||||||
|
(connrefused 61) ; Connection refused
|
||||||
|
|
||||||
|
(loop 62) ; Too many levels of symbolic links
|
||||||
|
|
||||||
|
;; POSIX:
|
||||||
|
(nametoolong 63) ; File name too long
|
||||||
|
|
||||||
|
;; should be rearranged
|
||||||
|
(hostdown 64) ; Host is down
|
||||||
|
(hostunreach 65) ; No route to host
|
||||||
|
|
||||||
|
;; POSIX:
|
||||||
|
(notempty 66) ; Directory not empty
|
||||||
|
|
||||||
|
;; quotas & mush
|
||||||
|
(proclim 67) ; Too many processes
|
||||||
|
(users 68) ; Too many users
|
||||||
|
(dquot 69) ; Disc quota exceeded
|
||||||
|
|
||||||
|
;; Network File System
|
||||||
|
(stale 70) ; Stale NFS file handle
|
||||||
|
(remote 71) ; Too many levels of remote in path
|
||||||
|
|
||||||
|
;; streams
|
||||||
|
(nostr 72) ; Device is not a stream
|
||||||
|
(time 73) ; Timer expired
|
||||||
|
(nosr 74) ; Out of streams resources
|
||||||
|
(nomsg 75) ; No message of desired type
|
||||||
|
(badmsg 76) ; Trying to read unreadable message
|
||||||
|
|
||||||
|
;; SystemV IPC
|
||||||
|
(idrm 77) ; Identifier removed
|
||||||
|
|
||||||
|
;; POSIX
|
||||||
|
;; SystemV Record Locking
|
||||||
|
(deadlk 78) ; Resource deadlock avoided
|
||||||
|
(nolck 79) ; No locks available
|
||||||
|
|
||||||
|
;; RFS
|
||||||
|
(nonet 80) ; Machine is not on the network
|
||||||
|
(rremote 81) ; Object is remote
|
||||||
|
(nolink 82) ; the link has been severed
|
||||||
|
(adv 83) ; advertise error
|
||||||
|
(srmnt 84) ; srmount error
|
||||||
|
(comm 85) ; Communication error on send
|
||||||
|
(proto 86) ; Protocol error
|
||||||
|
(multihop 87) ; multihop attempted
|
||||||
|
(dotdot 88) ; Cross mount point (not an error)
|
||||||
|
(remchg 89) ; Remote address changed
|
||||||
|
|
||||||
|
;; POSIX
|
||||||
|
(nosys 90)) ; function not implemented
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
;;; Flags for open(2) and fcntl(2).
|
||||||
|
;;; Copyright (c) 1993 by Olin Shivers. See file COPYING.
|
||||||
|
|
||||||
|
(define-enum-constants open
|
||||||
|
(read 0)
|
||||||
|
(write 1)
|
||||||
|
(read+write 2)
|
||||||
|
(append 8)
|
||||||
|
(create #x0200)
|
||||||
|
(exclusive #x0800)
|
||||||
|
(no-control-tty #x8000)
|
||||||
|
(non-blocking #x4000)
|
||||||
|
(truncate #x0400)
|
||||||
|
|
||||||
|
;;; Not POSIX.
|
||||||
|
(no-delay 4)
|
||||||
|
(sync #x2000))
|
||||||
|
|
||||||
|
(define open/access-mask
|
||||||
|
(bitwise-ior open/read
|
||||||
|
(bitwise-ior open/write open/read+write)))
|
||||||
|
|
||||||
|
;;; 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-record-lock 5) ; F_GETLK
|
||||||
|
(set-record-lock-no-block 6) ; F_SETLK
|
||||||
|
(set-record-lock 7)) ; F_SETLKW
|
||||||
|
|
||||||
|
;;; fcntl fdes-flags (F_GETFD)
|
||||||
|
|
||||||
|
(define fdflags/close-on-exec 1)
|
||||||
|
|
||||||
|
;;; 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
|
||||||
|
(write 2) ; F_WRLCK
|
||||||
|
(release 3)) ; F_UNLCK
|
|
@ -0,0 +1,4 @@
|
||||||
|
/* OS-dependent support for what is supposed to be the standard ANSI C Library.
|
||||||
|
** Copyright (c) 1996 by Brian D. Carlstrom.
|
||||||
|
*/
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
;;; Magic Numbers for Networking
|
||||||
|
;;; Copyright (c) 1994 by Brian D. Carlstrom. See file COPYING.
|
||||||
|
|
||||||
|
;;; magic numbers not from header file
|
||||||
|
;;; but from man page
|
||||||
|
;;; why can't unix make up its mind
|
||||||
|
(define shutdown/receives 0)
|
||||||
|
(define shutdown/sends 1)
|
||||||
|
(define shutdown/sends+receives 2)
|
||||||
|
|
||||||
|
;;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||||
|
;;; BELOW THIS POINT ARE BITS FROM:
|
||||||
|
;;; <sys/socket.h>
|
||||||
|
;;; <sys/un.h>
|
||||||
|
;;; <netinet/in.h>
|
||||||
|
;;; <netinet/tcp.h>
|
||||||
|
;;; <netdb.h>
|
||||||
|
;;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||||
|
|
||||||
|
;;; ADDRESS FAMILIES -- <sys/socket.h>
|
||||||
|
(define address-family/unspecified 0) ; unspecified
|
||||||
|
(define address-family/unix 1) ; local to host (pipes, portals)
|
||||||
|
(define address-family/internet 2) ; internetwork: UDP, TCP, etc.
|
||||||
|
|
||||||
|
;;; SOCKET TYPES -- <sys/socket.h>
|
||||||
|
(define socket-type/stream 1) ; stream socket
|
||||||
|
(define socket-type/datagram 2) ; datagram socket
|
||||||
|
(define socket-type/raw 3) ; raw-protocol interface
|
||||||
|
(define socket-type/rdm 4) ; reliably-delivered message
|
||||||
|
(define socket-type/seqpacket 5) ; sequenced packet stream
|
||||||
|
|
||||||
|
;;; PROTOCOL FAMILIES -- <sys/socket.h>
|
||||||
|
(define protocol-family/unspecified 0) ; unspecified
|
||||||
|
(define protocol-family/unix 1) ; local to host (pipes, portals)
|
||||||
|
(define protocol-family/internet 2) ; internetwork: UDP, TCP, etc.
|
||||||
|
|
||||||
|
;;; Well know addresses -- <netinet/in.h>
|
||||||
|
(define internet-address/any #x00000000)
|
||||||
|
(define internet-address/loopback #x7f000001)
|
||||||
|
(define internet-address/broadcast #xffffffff) ; must be masked
|
||||||
|
|
||||||
|
;;; errors from host lookup -- <netdb.h>
|
||||||
|
(define herror/host-not-found 1) ;Authoritative Answer Host not found
|
||||||
|
(define herror/try-again 2) ;Non-Authoritive Host not found, or SERVERFAIL
|
||||||
|
(define herror/no-recovery 3) ;Non recoverable errors, FORMERR, REFUSED, NOTIMP
|
||||||
|
(define herror/no-data 4) ;Valid name, no data record of requested type
|
||||||
|
(define herror/no-address herror/no-data) ;no address, look for MX record
|
||||||
|
|
||||||
|
;;; flags for send/recv -- <sys/socket.h>
|
||||||
|
(define message/out-of-band 1) ; process out-of-band data
|
||||||
|
(define message/peek 2) ; peek at incoming message
|
||||||
|
(define message/dont-route 4) ; send without using routing tables
|
||||||
|
|
||||||
|
;;; protocol level for socket options -- <sys/socket.h>
|
||||||
|
(define level/socket #xffff) ; SOL_SOCKET: options for socket level
|
||||||
|
|
||||||
|
;;; socket options -- <sys/socket.h>
|
||||||
|
(define socket/debug #x0001) ; turn on debugging info recording
|
||||||
|
(define socket/accept-connect #x0002) ; socket has had listen()
|
||||||
|
(define socket/reuse-address #x0004) ; allow local address reuse
|
||||||
|
(define socket/keep-alive #x0008) ; keep connections alive
|
||||||
|
(define socket/dont-route #x0010) ; just use interface addresses
|
||||||
|
(define socket/broadcast #x0020) ; permit sending of broadcast msgs
|
||||||
|
(define socket/use-loop-back #x0040) ; bypass hardware when possible
|
||||||
|
(define socket/linger #x0080) ; linger on close if data present
|
||||||
|
(define socket/oob-inline #x0100) ; leave received OOB data in line
|
||||||
|
(define socket/use-privileged #x4000) ; allocate from privileged port area
|
||||||
|
(define socket/cant-signal #x8000) ; prevent SIGPIPE on SS_CANTSENDMORE
|
||||||
|
(define socket/send-buffer #x1001) ; send buffer size
|
||||||
|
(define socket/receive-buffer #x1002) ; receive buffer size
|
||||||
|
(define socket/send-low-water #x1003) ; send low-water mark
|
||||||
|
(define socket/receive-low-water #x1004) ; receive low-water mark
|
||||||
|
(define socket/send-timeout #x1005) ; send timeout
|
||||||
|
(define socket/receive-timeout #x1006) ; receive timeout
|
||||||
|
(define socket/error #x1007) ; get error status and clear
|
||||||
|
(define socket/type #x1008) ; get socket type
|
||||||
|
|
||||||
|
;;; ip options -- <netinet/in.h>
|
||||||
|
(define ip/options 1) ; set/get IP per-packet options
|
||||||
|
(define ip/time-to-live 2) ; set/get IP time-to-live value
|
||||||
|
|
||||||
|
;;; tcp options -- <netinet/tcp.h>
|
||||||
|
(define tcp/no-delay #x01) ; don't delay send to coalesce packets
|
||||||
|
(define tcp/max-segment #x02) ; set maximum segment size
|
||||||
|
|
||||||
|
;;; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||||
|
;;; OPTION SETS FOR SOCKET-OPTION AND SET-SOCKET-OPTION
|
||||||
|
|
||||||
|
;;; Boolean Options
|
||||||
|
(define options/boolean
|
||||||
|
(list socket/debug
|
||||||
|
socket/accept-connect
|
||||||
|
socket/reuse-address
|
||||||
|
socket/keep-alive
|
||||||
|
socket/dont-route
|
||||||
|
socket/broadcast
|
||||||
|
socket/use-loop-back
|
||||||
|
socket/oob-inline
|
||||||
|
socket/use-privileged
|
||||||
|
socket/cant-signal
|
||||||
|
tcp/no-delay))
|
||||||
|
|
||||||
|
;;; Integer Options
|
||||||
|
(define options/value
|
||||||
|
(list socket/send-buffer
|
||||||
|
socket/receive-buffer
|
||||||
|
socket/send-low-water
|
||||||
|
socket/receive-low-water
|
||||||
|
socket/error
|
||||||
|
socket/type
|
||||||
|
ip/time-to-live
|
||||||
|
tcp/max-segment))
|
||||||
|
|
||||||
|
;;; #f or Positive Integer
|
||||||
|
(define options/linger
|
||||||
|
(list socket/linger))
|
||||||
|
|
||||||
|
;;; Real Number
|
||||||
|
(define options/timeout
|
||||||
|
(list socket/send-timeout
|
||||||
|
socket/receive-timeout))
|
|
@ -0,0 +1,112 @@
|
||||||
|
;;; Interfaces and packages for the Sun specific parts of scsh.
|
||||||
|
;;; Copyright (c) 1994 by Olin Shivers. See file COPYING.
|
||||||
|
|
||||||
|
(define-interface generic-fdflags-extras-interface
|
||||||
|
(export open/no-delay
|
||||||
|
open/sync
|
||||||
|
))
|
||||||
|
|
||||||
|
(define-interface generic-errno-extras-interface
|
||||||
|
(export errno/addrinuse
|
||||||
|
errno/addrnotavail
|
||||||
|
errno/adv
|
||||||
|
errno/afnosupport
|
||||||
|
errno/already
|
||||||
|
errno/badmsg
|
||||||
|
errno/comm
|
||||||
|
errno/connaborted
|
||||||
|
errno/connrefused
|
||||||
|
errno/connreset
|
||||||
|
errno/destaddrreq
|
||||||
|
errno/dotdot
|
||||||
|
errno/dquot
|
||||||
|
errno/hostdown
|
||||||
|
errno/hostunreach
|
||||||
|
errno/idrm
|
||||||
|
errno/inprogress
|
||||||
|
errno/isconn
|
||||||
|
errno/loop
|
||||||
|
errno/msgsize
|
||||||
|
errno/multihop
|
||||||
|
errno/netdown
|
||||||
|
errno/netreset
|
||||||
|
errno/netunreach
|
||||||
|
errno/nobufs
|
||||||
|
errno/nolink
|
||||||
|
errno/nomsg
|
||||||
|
errno/nonet
|
||||||
|
errno/noprotoopt
|
||||||
|
errno/nosr
|
||||||
|
errno/nostr
|
||||||
|
errno/notblk
|
||||||
|
errno/notconn
|
||||||
|
errno/notsock
|
||||||
|
errno/opnotsupp
|
||||||
|
errno/pfnosupport
|
||||||
|
errno/proclim
|
||||||
|
errno/proto
|
||||||
|
errno/protonosupport
|
||||||
|
errno/prototype
|
||||||
|
errno/remchg
|
||||||
|
errno/remote
|
||||||
|
errno/rremote
|
||||||
|
errno/shutdown
|
||||||
|
errno/socktnosupport
|
||||||
|
errno/srmnt
|
||||||
|
errno/stale
|
||||||
|
errno/time
|
||||||
|
errno/timedout
|
||||||
|
errno/toomanyrefs
|
||||||
|
errno/users
|
||||||
|
errno/wouldblock
|
||||||
|
errno/xtbsy))
|
||||||
|
|
||||||
|
(define-interface generic-signals-extras-interface
|
||||||
|
(export signal/cld
|
||||||
|
signal/iot))
|
||||||
|
|
||||||
|
(define-interface generic-network-extras-interface
|
||||||
|
(export socket/debug
|
||||||
|
socket/accept-connect
|
||||||
|
socket/reuse-address
|
||||||
|
socket/keep-alive
|
||||||
|
socket/dont-route
|
||||||
|
socket/broadcast
|
||||||
|
socket/use-loop-back
|
||||||
|
socket/linger
|
||||||
|
socket/oob-inline
|
||||||
|
; socket/use-privileged
|
||||||
|
; socket/cant-signal
|
||||||
|
socket/send-buffer
|
||||||
|
socket/receive-buffer
|
||||||
|
socket/send-low-water
|
||||||
|
socket/receive-low-water
|
||||||
|
socket/send-timeout
|
||||||
|
socket/receive-timeout
|
||||||
|
socket/error
|
||||||
|
socket/type
|
||||||
|
ip/options
|
||||||
|
; ip/time-to-live
|
||||||
|
tcp/no-delay
|
||||||
|
tcp/max-segment))
|
||||||
|
|
||||||
|
(define-interface generic-extras-interface
|
||||||
|
(compound-interface generic-errno-extras-interface
|
||||||
|
generic-fdflags-extras-interface
|
||||||
|
generic-network-extras-interface
|
||||||
|
generic-signals-extras-interface))
|
||||||
|
|
||||||
|
(define-interface generic-defs-interface
|
||||||
|
(compound-interface generic-extras-interface
|
||||||
|
sockets-network-interface
|
||||||
|
posix-errno-interface
|
||||||
|
posix-fdflags-interface
|
||||||
|
posix-signals-interface
|
||||||
|
signals-internals-interface))
|
||||||
|
|
||||||
|
(define-structure generic-defs generic-defs-interface
|
||||||
|
(open scheme bitwise defenum-package)
|
||||||
|
(files fdflags errno signals netconst))
|
||||||
|
|
||||||
|
(define-interface os-extras-interface generic-extras-interface)
|
||||||
|
(define os-dependent generic-defs)
|
|
@ -0,0 +1,33 @@
|
||||||
|
;;; Signal constant definitions for "generic"
|
||||||
|
;;; Copyright (c) 1994 by Olin Shivers. See file COPYING.
|
||||||
|
;;; Copyright (c) 1994 by Brian D. Carlstrom.
|
||||||
|
|
||||||
|
;;POSIX only defined here.
|
||||||
|
|
||||||
|
(define-enum-constants signal
|
||||||
|
;; POSIX
|
||||||
|
(hup 1) ; hangup
|
||||||
|
(int 2) ; interrupt
|
||||||
|
(quit 3) ; quit
|
||||||
|
(ill 4) ; illegal instruction (not reset when caught)
|
||||||
|
(iot 6) ; IOT instruction
|
||||||
|
(abrt 6) ; used by abort, replace SIGIOT in the future
|
||||||
|
(fpe 8) ; floating point exception
|
||||||
|
(kill 9) ; kill (cannot be caught or ignored)
|
||||||
|
(segv 11) ; segmentation violation
|
||||||
|
(pipe 13) ; write on a pipe with no one to read it
|
||||||
|
(alrm 14) ; alarm clock
|
||||||
|
(term 15) ; software termination signal from kill
|
||||||
|
(stop 17) ; sendable stop signal not from tty
|
||||||
|
(tstp 18) ; stop signal from tty
|
||||||
|
(cont 19) ; continue a stopped process
|
||||||
|
(chld 20) ; to parent on child stop or exit
|
||||||
|
(ttin 21) ; to readers pgrp upon background tty read
|
||||||
|
(ttou 22) ; like TTIN for output if (tp->t_local<OSTOP)
|
||||||
|
;; User defined
|
||||||
|
(usr1 30) ; user defined signal 1
|
||||||
|
(usr2 31) ; user defined signal 2
|
||||||
|
)
|
||||||
|
|
||||||
|
(define signals-ignored-by-default
|
||||||
|
(list signal/chld signal/cont)) ; These are Posix.
|
|
@ -0,0 +1,8 @@
|
||||||
|
;;; OS-dependent time stuff
|
||||||
|
;;; Copyright (c) 1995 by Olin Shivers. See file COPYING.
|
||||||
|
|
||||||
|
;;; This suffices for BSD systems with the gettimeofday()
|
||||||
|
;;; microsecond-resolution timer.
|
||||||
|
|
||||||
|
(define (ticks/sec) 1000000) ; usec
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
/* OS-dependent support for fine-grained timer.
|
||||||
|
** Copyright (c) 1995 by Olin Shivers.
|
||||||
|
**
|
||||||
|
** We return the current time in seconds and sub-second "ticks" where the
|
||||||
|
** number of ticks/second is OS dependent (and is defined in time_dep.scm).
|
||||||
|
** This definition works on any BSD Unix with the gettimeofday()
|
||||||
|
** microsecond-resolution timer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include "scheme48.h"
|
||||||
|
#include "../time1.h"
|
||||||
|
|
||||||
|
s48_value time_plus_ticks()
|
||||||
|
{
|
||||||
|
struct timeval t;
|
||||||
|
struct timezone tz;
|
||||||
|
|
||||||
|
if( gettimeofday(&t, &tz) ) s48_raise_os_error (errno);
|
||||||
|
|
||||||
|
return s48_cons (s48_enter_integer (t.tv_sec),
|
||||||
|
s48_cons (s48_enter_integer (t.tv_usec), S48_NULL));
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
;;; Scsh routines for analysing exit codes returned by WAIT.
|
||||||
|
;;; Copyright (c) 1994 by Olin Shivers. See file COPYING.
|
||||||
|
;;;
|
||||||
|
;;; To port these to a new OS, consult /usr/include/sys/wait.h,
|
||||||
|
;;; and check the WIFEXITED, WEXITSTATUS, WIFSTOPPED, WSTOPSIG,
|
||||||
|
;;; WIFSIGNALED, and WTERMSIG macros for the magic fields they use.
|
||||||
|
;;; These definitions are for NeXTSTEP.
|
||||||
|
;;;
|
||||||
|
;;; I could have done a portable version by making C calls for this,
|
||||||
|
;;; but it's such overkill.
|
||||||
|
|
||||||
|
|
||||||
|
;;; If process terminated normally, return the exit code, otw #f.
|
||||||
|
|
||||||
|
(define (status:exit-val status)
|
||||||
|
(and (zero? (bitwise-and #xFF status))
|
||||||
|
(bitwise-and #xFF (arithmetic-shift status -8))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;;; If the process was suspended, return the suspending signal, otw #f.
|
||||||
|
|
||||||
|
(define (status:stop-sig status)
|
||||||
|
(and (not (zero? (bitwise-and status #x40)))
|
||||||
|
(bitwise-and #x7F (arithmetic-shift status -8))))
|
||||||
|
|
||||||
|
|
||||||
|
;;; If the process terminated abnormally,
|
||||||
|
;;; return the terminating signal, otw #f.
|
||||||
|
|
||||||
|
(define (status:term-sig status)
|
||||||
|
(and (not (zero? (bitwise-and status #xFF))) ; Didn't exit.
|
||||||
|
(zero? (bitwise-and status #x40)) ; Not suspended.
|
||||||
|
(bitwise-and status #x7F)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;;; Flags.
|
||||||
|
(define wait/poll 1) ; Don't hang if nothing to wait for.
|
||||||
|
(define wait/stopped-children 2) ; Report on suspended subprocs, too.
|
Loading…
Reference in New Issue