From d467629ad89882566e2b8a8ef7b2329e74f38ded Mon Sep 17 00:00:00 2001 From: "Stefanos A." Date: Tue, 14 Jan 2014 18:15:53 +0100 Subject: [PATCH] [Linux] Added INotify bindings These are not currently used. --- Source/OpenTK/Platform/X11/Bindings/INotify.cs | 210 +++++++++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 Source/OpenTK/Platform/X11/Bindings/INotify.cs diff --git a/Source/OpenTK/Platform/X11/Bindings/INotify.cs b/Source/OpenTK/Platform/X11/Bindings/INotify.cs new file mode 100644 index 0000000..662b12a --- /dev/null +++ b/Source/OpenTK/Platform/X11/Bindings/INotify.cs @@ -0,0 +1,210 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace OpenTK.Platform.X11.Bindings +{ + // Fully implemented but not currently used by OpenTK + // See System.IO.FileSystemWatcher for a cross-platform alternative +#if false + class INotify + { + const string lib = ""; + + /// + /// Create and initialize inotify instance + /// + /// + [DllImport(lib, EntryPoint = "inotify_init", ExactSpelling = true)] + public static extern int Init(); + + /// + /// Create and initialize inotify instance with specified flags + /// + /// See + /// A System.Int32 handle to a inotify instance + [DllImport(lib, EntryPoint = "inotify_init1", ExactSpelling = true)] + public static extern int Init(INotifyFlags flags); + + /// + /// Add watch of object pathname to inotify instance fd. Notify about + /// events specified by mask + /// + [DllImport(lib, EntryPoint = "inotify_add_watch", ExactSpelling = true)] + public static extern int AddWatch(int fd, string pathname, INotifyFlags mask); + + /// + /// Remove the watch specified by wd from the inotify instance fd + /// + [DllImport(lib, EntryPoint = "inotify_rm_watch", ExactSpelling = true)] + public static extern int RemoveWatch(int fd, int wd); + } + + /// + /// Describes an INotify event + /// + struct INotifyEvent + { + /// + /// Watch descriptor for wd parameter of INotify methods + /// + public int WatchDescriptor; + + /// + /// Watch mask for mask parameter of INotify methods + /// + public INotifyFlags WatchMask; + + /// + /// Cookie to synchronize two events + /// + public uint Cookie; + + /// + /// Length (including NULs) of name + /// + public uint Length; + + /// + /// + /// + public IntPtr Name; + } + + /// + /// Flags for the parameter of + /// + [Flags] + enum INotifyInitFlags + { + CloExec = 02000000, + NonBlock = 04000 + } + + /// \internal + /// + /// Supported events suitable for MASK parameter of AddWatch. + /// + [Flags] + enum INotifyFlags + { + /// + /// File was accessed + /// + Access = 0x00000001, + + /// + /// File was modified + /// + Modify = 0x00000002, + + /// + /// Metadata changed + /// + Attrib = 0x00000004, + + /// + /// Writable file was closed + /// + CloseWrite = 0x00000008, + + /// + /// Unwritable file closed + /// + CloseNoWrite = 0x00000010, + + /// + /// File closed + /// + Close = CloseWrite | CloseNoWrite, + + /// + /// File was opened + /// + Open = 0x00000020, + + /// + /// File was moved from X + /// + MovedFrom = 0x00000040, + + /// + /// File was moved to Y + /// + MovedTo = 0x00000080, + + /// + /// File was moved + /// + Move = MovedFrom | MovedTo, + + /// + /// Subfile was created + /// + Create = 0x00000100, + + /// + /// Subfile was deleted + /// + Delete = 0x00000200, + + /// + /// Self was deleted + /// + DeleteSelf = 0x00000400, + + /// + /// Self was moved + /// + MoveSelf = 0x00000800, + + /// + /// Backing fs was unmounted + /// + Unmount = 0x00002000, + + /// + /// Event queue overflowed + /// + QueueOverflow = 0x00004000, + + /// + /// File was ignored + /// + Ignored = 0x00008000, + + /// + /// Only watch the path if it is a directory + /// + OnlyDirectory = 0x01000000, + + /// + /// Do not follow symlinks + /// + DontFollow = 0x02000000, + + /// + /// Add to the mask of an already existing watch + /// + MaskAdd = 0x20000000, + + /// + /// Event occurred against dir + /// + IsDirectory = 0x40000000, + + /// + /// Only send event once + /// + Oneshot = 0x80000000, + + /// + /// All events which a program can wait on + /// + AllEvents = + Access | Modify | Attrib | Close | Open | Move | + Create | Delete | DeleteSelf | MoveSelf + } +#endif +} -- 2.7.4