diff options
author | Balazs Lecz <leczb@google.com> | 2010-09-27 11:44:26 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-09-27 11:44:26 -0400 |
commit | 4bfcfcf89f0aa756b3ad2a10130cda1a5ab62db3 (patch) | |
tree | b4339d736d5080a1ccbaca97610d524a09a7a1dd | |
parent | 07b56fce66f1548a7a505791742f39e7f82b2798 (diff) | |
download | go-4bfcfcf89f0aa756b3ad2a10130cda1a5ab62db3.tar.gz go-4bfcfcf89f0aa756b3ad2a10130cda1a5ab62db3.zip |
syscall: add inotify on Linux
R=rsc
CC=golang-dev
https://golang.org/cl/2241045
-rwxr-xr-x | src/pkg/syscall/mkerrors.sh | 2 | ||||
-rw-r--r-- | src/pkg/syscall/syscall_linux.go | 7 | ||||
-rw-r--r-- | src/pkg/syscall/types_linux.c | 9 | ||||
-rw-r--r-- | src/pkg/syscall/zerrors_linux_386.go | 37 | ||||
-rw-r--r-- | src/pkg/syscall/zerrors_linux_amd64.go | 37 | ||||
-rw-r--r-- | src/pkg/syscall/zerrors_linux_arm.go | 37 | ||||
-rw-r--r-- | src/pkg/syscall/zsyscall_linux_386.go | 36 | ||||
-rw-r--r-- | src/pkg/syscall/zsyscall_linux_amd64.go | 36 | ||||
-rw-r--r-- | src/pkg/syscall/zsyscall_linux_arm.go | 28 | ||||
-rw-r--r-- | src/pkg/syscall/ztypes_linux_386.go | 8 | ||||
-rw-r--r-- | src/pkg/syscall/ztypes_linux_amd64.go | 8 | ||||
-rw-r--r-- | src/pkg/syscall/ztypes_linux_arm.go | 8 |
12 files changed, 250 insertions, 3 deletions
diff --git a/src/pkg/syscall/mkerrors.sh b/src/pkg/syscall/mkerrors.sh index b3ed0f627e..48274b9808 100755 --- a/src/pkg/syscall/mkerrors.sh +++ b/src/pkg/syscall/mkerrors.sh @@ -23,6 +23,7 @@ includes_Linux=' #include <sys/types.h> #include <sys/epoll.h> +#include <sys/inotify.h> #include <linux/ptrace.h> #include <linux/wait.h> ' @@ -84,6 +85,7 @@ done $2 ~ /^E[A-Z0-9_]+$/ || $2 ~ /^SIG[^_]/ || + $2 ~ /^IN_/ || $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|EVFILT|EV|SHUT|PROT|MAP)_/ || $2 == "SOMAXCONN" || $2 == "NAME_MAX" || diff --git a/src/pkg/syscall/syscall_linux.go b/src/pkg/syscall/syscall_linux.go index 8ee9bebae8..19c9cc3d90 100644 --- a/src/pkg/syscall/syscall_linux.go +++ b/src/pkg/syscall/syscall_linux.go @@ -593,6 +593,10 @@ func PtraceDetach(pid int) (errno int) { return ptrace(PTRACE_DETACH, pid, 0, 0) //sys Getrlimit(resource int, rlim *Rlimit) (errno int) //sys Getrusage(who int, rusage *Rusage) (errno int) //sys Gettid() (tid int) +//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, errno int) +//sys InotifyInit() (fd int, errno int) +//sys InotifyInit1(flags int) (fd int, errno int) +//sys InotifyRmWatch(fd int, watchdesc uint32) (success int, errno int) //sys Kill(pid int, sig int) (errno int) //sys Klogctl(typ int, buf []byte) (n int, errno int) = SYS_SYSLOG //sys Link(oldpath string, newpath string) (errno int) @@ -675,9 +679,6 @@ func PtraceDetach(pid int) (errno int) { return ptrace(PTRACE_DETACH, pid, 0, 0) // Getpmsg // Getpriority // Getxattr -// InotifyAddWatch -// InotifyInit -// InotifyRmWatch // IoCancel // IoDestroy // IoGetevents diff --git a/src/pkg/syscall/types_linux.c b/src/pkg/syscall/types_linux.c index 123da34c5a..d0cd4a1849 100644 --- a/src/pkg/syscall/types_linux.c +++ b/src/pkg/syscall/types_linux.c @@ -18,6 +18,7 @@ Input to godefs. See also mkerrors.sh and mkall.sh #include <signal.h> #include <stdio.h> #include <sys/epoll.h> +#include <sys/inotify.h> #include <sys/mman.h> #include <sys/mount.h> #include <sys/param.h> @@ -119,6 +120,14 @@ enum { }; +// Inotify +typedef struct inotify_event $InotifyEvent; + +enum { + $SizeofInotifyEvent = sizeof(struct inotify_event) +}; + + // Ptrace // Register structures diff --git a/src/pkg/syscall/zerrors_linux_386.go b/src/pkg/syscall/zerrors_linux_386.go index ff3c12effb..b4bb19ba70 100644 --- a/src/pkg/syscall/zerrors_linux_386.go +++ b/src/pkg/syscall/zerrors_linux_386.go @@ -232,6 +232,43 @@ const ( F_ULOCK = 0 F_UNLCK = 0x2 F_WRLCK = 0x1 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 IPPROTO_AH = 0x33 IPPROTO_COMP = 0x6c IPPROTO_DCCP = 0x21 diff --git a/src/pkg/syscall/zerrors_linux_amd64.go b/src/pkg/syscall/zerrors_linux_amd64.go index f256090140..1893c51bff 100644 --- a/src/pkg/syscall/zerrors_linux_amd64.go +++ b/src/pkg/syscall/zerrors_linux_amd64.go @@ -232,6 +232,43 @@ const ( F_ULOCK = 0 F_UNLCK = 0x2 F_WRLCK = 0x1 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 IPPROTO_AH = 0x33 IPPROTO_COMP = 0x6c IPPROTO_DCCP = 0x21 diff --git a/src/pkg/syscall/zerrors_linux_arm.go b/src/pkg/syscall/zerrors_linux_arm.go index 3557000488..1f8b1830b3 100644 --- a/src/pkg/syscall/zerrors_linux_arm.go +++ b/src/pkg/syscall/zerrors_linux_arm.go @@ -226,6 +226,43 @@ const ( F_ULOCK = 0 F_UNLCK = 0x2 F_WRLCK = 0x1 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 IPPROTO_AH = 0x33 IPPROTO_COMP = 0x6c IPPROTO_DCCP = 0x21 diff --git a/src/pkg/syscall/zsyscall_linux_386.go b/src/pkg/syscall/zsyscall_linux_386.go index 6036dc92fa..b752177ad6 100644 --- a/src/pkg/syscall/zsyscall_linux_386.go +++ b/src/pkg/syscall/zsyscall_linux_386.go @@ -351,6 +351,42 @@ func Gettid() (tid int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(StringBytePtr(pathname))), uintptr(mask)) + watchdesc = int(r0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Kill(pid int, sig int) (errno int) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) errno = int(e1) diff --git a/src/pkg/syscall/zsyscall_linux_amd64.go b/src/pkg/syscall/zsyscall_linux_amd64.go index fa2be09455..ee0505122f 100644 --- a/src/pkg/syscall/zsyscall_linux_amd64.go +++ b/src/pkg/syscall/zsyscall_linux_amd64.go @@ -351,6 +351,42 @@ func Gettid() (tid int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(StringBytePtr(pathname))), uintptr(mask)) + watchdesc = int(r0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Kill(pid int, sig int) (errno int) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) errno = int(e1) diff --git a/src/pkg/syscall/zsyscall_linux_arm.go b/src/pkg/syscall/zsyscall_linux_arm.go index dc23c4468a..91bbbcc93e 100644 --- a/src/pkg/syscall/zsyscall_linux_arm.go +++ b/src/pkg/syscall/zsyscall_linux_arm.go @@ -269,6 +269,34 @@ func Gettid() (tid int) { return } +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(StringBytePtr(pathname))), uintptr(mask)) + watchdesc = int(r0) + errno = int(e1) + return +} + +func InotifyInit() (fd int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + errno = int(e1) + return +} + +func InotifyInit1(flags int) (fd int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + errno = int(e1) + return +} + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, errno int) { + r0, _, e1 := Syscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + errno = int(e1) + return +} + func Kill(pid int, sig int) (errno int) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) errno = int(e1) diff --git a/src/pkg/syscall/ztypes_linux_386.go b/src/pkg/syscall/ztypes_linux_386.go index 2afabb13ff..53751529b9 100644 --- a/src/pkg/syscall/ztypes_linux_386.go +++ b/src/pkg/syscall/ztypes_linux_386.go @@ -19,6 +19,7 @@ const ( SizeofLinger = 0x8 SizeofMsghdr = 0x1c SizeofCmsghdr = 0xc + SizeofInotifyEvent = 0x10 ) // Types @@ -217,6 +218,13 @@ type Cmsghdr struct { Type int32 } +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + type PtraceRegs struct { Ebx int32 Ecx int32 diff --git a/src/pkg/syscall/ztypes_linux_amd64.go b/src/pkg/syscall/ztypes_linux_amd64.go index 2ca047fd73..6a19a88a80 100644 --- a/src/pkg/syscall/ztypes_linux_amd64.go +++ b/src/pkg/syscall/ztypes_linux_amd64.go @@ -19,6 +19,7 @@ const ( SizeofLinger = 0x8 SizeofMsghdr = 0x38 SizeofCmsghdr = 0x10 + SizeofInotifyEvent = 0x10 ) // Types @@ -219,6 +220,13 @@ type Cmsghdr struct { Type int32 } +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + type PtraceRegs struct { R15 uint64 R14 uint64 diff --git a/src/pkg/syscall/ztypes_linux_arm.go b/src/pkg/syscall/ztypes_linux_arm.go index 17ed7cad5a..df752b8b19 100644 --- a/src/pkg/syscall/ztypes_linux_arm.go +++ b/src/pkg/syscall/ztypes_linux_arm.go @@ -19,6 +19,7 @@ const ( SizeofLinger = 0x8 SizeofMsghdr = 0x1c SizeofCmsghdr = 0xc + SizeofInotifyEvent = 0x10 ) // Types @@ -219,6 +220,13 @@ type Cmsghdr struct { Type int32 } +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + type PtraceRegs struct{} type FdSet struct { |