sched_setscheduler sched_getscheduler sched_setparam
sched_getparam sched_rr_get_intervall sched_yield
sched_setaffinity sched_getaffinity
-
+
+ supports_dir_fs support_effective_ids supports_fd
))
+(define supports_dir_fs
+ (py-set '()))
+
+(define support_effective_ids
+ (py-set '()))
+
+(define supports_fd
+ (py-set '()))
+
(define error OSError)
(define errno
(let ((f (dynamic-pointer "errno" (dynamic-link))))
(raise error (errno) ((@ (guile) strerror) (errno)))
(values))))
-(define-syntax-rule (defineu f x)
- (define f
- (catch #t
- (lambda () x)
- (lambda z
- (let ((message (format #f "could not define ~a" 'f)))
- (warn message)
- (lambda z (error message)))))))
+(define (py-add s x)
+ ((ref s 'add) x))
+
+(define-syntax reg
+ (syntax-rules ()
+ ((_ () f)
+ (values))
+ ((_ (0 . l) f)
+ (begin
+ (py-add supports_dir_fs (symbol->string 'f))
+ (reg l f)))
+ ((_ (1 . l) f)
+ (begin
+ (py-add support_effective_ids (symbol->string 'f))
+ (reg l f)))
+ ((_ (2 . l) f)
+ (begin
+ (py-add supports_fd (symbol->string 'f))
+ (reg l f)))))
+
+(define-syntax-rule (defineu f a x)
+ (begin
+ (define f
+ (catch #t
+ (lambda () x)
+ (lambda z
+ (let ((message (format #f "could not define ~a" 'f)))
+ (warn message)
+ (lambda z (error message))))))
+ (reg a f)))
(define-syntax guile
(syntax-rules ()
(guile getpriority)
(define getresgid #f)
-(defineu getresgid
+(defineu getresgid ()
(let* ((f (pointer->procedure
void
(dynamic-func "getresgid" (dynamic-link))
(guile getuid)
(define initgroups #f)
-(defineu initgroups
+(defineu initgroups ()
(let ((f (pointer->procedure
int
(dynamic-func "initgroups" (dynamic-link))
(guile setgroups)
(define setpgrp #f)
-(defineu setpgrp
+(defineu setpgrp ()
(let ((f (pointer->procedure int
(dynamic-func "setpgrp" (dynamic-link))
'())))
(rm (f a b c)))))
(define setreuid #f)
-(defineu setreuid
+(defineu setreuid ()
(let ((f (pointer->procedure int
(dynamic-func "setreuid" (dynamic-link))
(list int int))))
(rm (f a b)))))
(define setresuid #f)
-(defineu setresuid
+(defineu setresuid ()
(let ((f (pointer->procedure int
(dynamic-func "setresuid" (dynamic-link))
(list int int int))))
(define F_TEST 3)
(define lockf #f)
-(defineu lockf
+(defineu lockf (2)
(let ((f (pointer->procedure int
(dynamic-func "lockf" (dynamic-link))
(list int int long))))
(define SEEK_HOLE #x4)
(define lseek #f)
-(defineu lseek
+(defineu lseek (2)
(let ((f (pointer->procedure int
(dynamic-func "lseek" (dynamic-link))
(list int long int))))
(values (car x) (cdr x))))
(define pipe2 #f)
-(defineu pipe2
+(defineu pipe2 ()
(let ((f (pointer->procedure int
(dynamic-func "pipe2" (dynamic-link))
(list int '* int))))
(define posix_fallocate #f)
-(defineu posix_fallocate
+(defineu posix_fallocate (2)
(let ((f (pointer->procedure int
(dynamic-func "posix_fallocate" (dynamic-link))
(list int long long))))
(rm (f fd off len)))))
(define posix_fadvise #f)
-(defineu posix_fadvise
+(defineu posix_fadvise (2)
(let ((f (pointer->procedure int
(dynamic-func "posix_fadvise" (dynamic-link))
(list int long long int))))
(define POSIX_FADV_NOREUSE 5)
(define pread #f)
-(defineu pread
+(defineu pread (2)
(let ((f (pointer->procedure int
(dynamic-func "pread" (dynamic-link))
(list int '* long long))))
o)))))))
(define pwrite #f)
-(defineu pwrite
+(defineu pwrite (2)
(let ((f (pointer->procedure int
(dynamic-func "pwrite" (dynamic-link))
(list int '* long long))))
(rm (f fd ap (len a) offset))))))
(define read #f)
-(defineu read
+(defineu read (2)
(let ((f (pointer->procedure int
(dynamic-func "read" (dynamic-link))
(list int '* long))))
(define fcntl2 #f)
(define fcntl3 #f)
-(defineu fcntl2 (pointer->procedure int
- (dynamic-func "fcntl" (dynamic-link))
- (list int int)))
-(defineu fcntl3 (pointer->procedure int
- (dynamic-func "fcntl" (dynamic-link))
- (list int int int)))
+(defineu fcntl2 () (pointer->procedure int
+ (dynamic-func "fcntl" (dynamic-link))
+ (list int int)))
+(defineu fcntl3 () (pointer->procedure int
+ (dynamic-func "fcntl" (dynamic-link))
+ (list int int int)))
(define (set_blocking fd is-blocking?)
(let ((o (rm (fcntl2 fd F_GETFL))))
(guile (fd) ttyname)
(define write #f)
-(defineu write
+(defineu write (2)
(let ((f (pointer->procedure int
(dynamic-func "write" (dynamic-link))
(list int '* long))))
(define X_OK (@ (guile) X_OK))
(define access #f)
-(defineu access
+(defineu access (0 1)
(let ((f (pointer->procedure int
(dynamic-func "access" (dynamic-link))
(list '* int)))
(define chdir #f)
-(defineu chdir
+(defineu chdir (2)
(let ((f (pointer->procedure int
(dynamic-func "chdir" (dynamic-link))
'(*))))
(lambda x (error "Not implemented")))
(define chmod (lambda x #f))
-(defineu chmod
+(defineu chmod (0 2)
(let ((f (pointer->procedure int
(dynamic-func "chmod" (dynamic-link))
(list '* int)))
path))
(define chown (lambda x #f))
-(defineu chown
+(defineu chown (0 2)
(let ((f (pointer->procedure int
(dynamic-func "chown" (dynamic-link))
(list '* int int)))
(define AT_FDCWD -100)
(define link #f)
-(defineu link
+(defineu link (0)
(let ((f (pointer->procedure int
(dynamic-func "linkat" (dynamic-link))
(list '* '* int int int))))
(lambda x (closedir o)))))))
(define stat (lambda x #f))
-(defineu stat
+(defineu stat (0 2)
(let ((f (pointer->procedure int
(dynamic-func "__fxstatat" (dynamic-link))
(list int int '* '* int)))
(stat path #:dir_fd dir_fd #:follow_symlinks #f)))
(define mkdir #f)
-(defineu mkdir
+(defineu mkdir (0)
(let ((fat (pointer->procedure int
(dynamic-func "mkdirat" (dynamic-link))
(list int '* int))))
(lp s l))))))
(define mkfifo #f)
-(defineu mkfifo
+(defineu mkfifo (0)
(let ((fat (pointer->procedure int
(dynamic-func "mkfifoat" (dynamic-link))
(list int '* int))))
mode)))))
(define mknod #f)
-(defineu mknod
+(defineu mknod (0)
(let ((fat (pointer->procedure int
(dynamic-func "__xmknodat" (dynamic-link))
(list int int '* int))))
device)))))
(define major #f)
-(defineu major
+(defineu major ()
(let ((f (pointer->procedure int
(dynamic-func "gnu_dev_major" (dynamic-link))
(list int64))))
(ca (f device)))))
(define minor #f)
-(defineu minor
+(defineu minor ()
(let ((f (pointer->procedure int
(dynamic-func "gnu_dev_minor" (dynamic-link))
(list int64))))
(ca (f device)))))
(define makedev #f)
-(defineu makedev
+(defineu makedev ()
(let ((f (pointer->procedure int64
(dynamic-func "gnu_dev_makedev" (dynamic-link))
(list int int))))
(define pathconf #f)
-(defineu pathconf
+(defineu pathconf (2)
(let ((f (pointer->procedure long
(dynamic-func "pathconf" (dynamic-link))
(list '* int)))
(rmp (f (string->pointer path) ni))))))))
(define readlink #f)
-(defineu readlink
+(defineu readlink (0)
(let ((fat (pointer->procedure int
(dynamic-func "readlinkat" (dynamic-link))
(list int '* '* long))))
(pointer->string bvp)))))
(define remove #f)
-(defineu remove
+(defineu remove (0)
(let ((fat (pointer->procedure int
(dynamic-func "unlinkat" (dynamic-link))
(list int '* int))))
(lp (cdr l)))))))
(define rename #f)
-(defineu rename
+(defineu rename (0)
(let ((fat (pointer->procedure int
(dynamic-func "renameat" (dynamic-link))
(list int '* int '*))))
(list a1 a2 a3 a4 a5 a6 a7 a8 a9 a10)))))
(define statvfs #f)
-(defineu statvfs
+(defineu statvfs (2)
(let ((f (pointer->procedure int
(dynamic-func "statvfs" (dynamic-link))
(list '* '*)))
(bytevector-u64-ref bv (* 10 8) (native-endianness)))))))
(define symlink #f)
-(defineu symlink
+(defineu symlink (0)
(let ((fat (pointer->procedure int
(dynamic-func "symlinkat" (dynamic-link))
(list '* int '*))))
(string->pointer (path-it src))))))))
(define truncate #f)
-(defineu truncate
+(defineu truncate (2)
(let ((ff (pointer->procedure int
(dynamic-func "ftruncate" (dynamic-link))
(list int long)))
(define UTIME_NOW (- (ash 1 30) 1))
(define utime #f)
-(defineu utime
+(defineu utime (0 2)
(let ((ff (pointer->procedure int
(dynamic-func "futimes" (dynamic-link))
(list int '*)))
;; Extended attributes
(define getxattr #f)
-(defineu getxattr
+(defineu getxattr (2)
(let ((f (pointer->procedure int
(dynamic-func "getxattr" (dynamic-link))
(list '* '* '* int)))
(pointer->string pv)))))))))
(define listxattr #f)
-(defineu listxattr
+(defineu listxattr (2)
(let ((f (pointer->procedure int
(dynamic-func "listxattr" (dynamic-link))
(list '* '* int)))
(pylist (reverse l))))))))))))
(define removexattr #f)
-(defineu removexattr
+(defineu removexattr (2)
(let ((f (pointer->procedure int
(dynamic-func "removexattr" (dynamic-link))
(list '* '*)))
(lf path k))))))))
(define setxattr #f)
-(defineu setxattr
+(defineu setxattr (2)
(let ((f (pointer->procedure int
(dynamic-func "setxattr" (dynamic-link))
(list '* '* '* int int)))
(ref self 'si_status)))))
(define waitid #f)
-(defineu waitid
+(defineu waitid ()
(let ((f (pointer->procedure int
(dynamic-func "waitid" (dynamic-link))
(list int int '* int))))
(ca ((@ (guile) waitpid) pid options)))
(define wait3 #f)
-(defineu wait3
+(defineu wait3 ()
(let ((f (pointer->procedure int
(dynamic-func "wait3" (dynamic-link))
(list '* int '*))))
(ResUsage v)))))))
(define wait4 #f)
-(defineu wait4
+(defineu wait4 ()
(let ((f (pointer->procedure int
(dynamic-func "wait4" (dynamic-link))
(list int '* int '*))))
(set self 'sched_priority v)))))
(define sched_get_priority_min #f)
-(defineu sched_get_priority_min
+(defineu sched_get_priority_min ()
(let ((f (pointer->procedure int
(dynamic-func "sched_get_priority_min"
(dynamic-link))
(lambda (policy) (rm (f policy)))))
(define sched_get_priority_max #f)
-(defineu sched_get_priority_max
+(defineu sched_get_priority_max ()
(let ((f (pointer->procedure int
(dynamic-func "sched_get_priority_max"
(dynamic-link))
(lambda (policy) (rm (f policy)))))
(define sched_setscheduler #f)
-(defineu sched_setscheduler
+(defineu sched_setscheduler ()
(let ((f (pointer->procedure int
(dynamic-func "sched_setscheduler"
(dynamic-link))
(rm (f pid policy vp))))))
(define sched_getscheduler #f)
-(defineu sched_getscheduler
+(defineu sched_getscheduler ()
(let ((f (pointer->procedure int
(dynamic-func "sched_getscheduler"
(dynamic-link))
(ca (f pid)))))
(define sched_setparam #f)
-(defineu sched_setparam
+(defineu sched_setparam ()
(let ((f (pointer->procedure int
(dynamic-func "sched_setparam"
(dynamic-link))
(rm (f pid vp))))))
(define sched_getparam #f)
-(defineu sched_getparam
+(defineu sched_getparam ()
(let ((f (pointer->procedure int
(dynamic-func "sched_getparam"
(dynamic-link))
(lambda x (error "not implemented")))
(define sched_yield #f)
-(defineu sched_yield
+(defineu sched_yield ()
(let ((f (pointer->procedure int
(dynamic-func "sched_yield"
(dynamic-link))
(lambda () (rm (f)))))
(define sched_setaffinity#f)
-(defineu sched_setaffinity
+(defineu sched_setaffinity ()
(let ((f (pointer->procedure int
(dynamic-func "sched_setaffinity"
(dynamic-link))
(rm (f pid (/ n 8) vp))))))
(define sched_getaffinity #f)
-(defineu sched_getaffinity
+(defineu sched_getaffinity ()
(let ((f (pointer->procedure int
(dynamic-func "sched_getaffinity"
(dynamic-link))
;; MISC SYSTEM INFORMATION
-
-(define supprts_dir_fs
- (py-set '()))
-
-(define support_effective_ids
- (py-set '()))
-
-(define supports_fd
- (py-set '()))