incubator-nuttx/include/sys/inotify.h

170 lines
7.2 KiB
C

/****************************************************************************
* include/sys/inotify.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __INCLUDE_SYS_INOTIFY_H
#define __INCLUDE_SYS_INOTIFY_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <fcntl.h>
#include <stdint.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#define IN_ACCESS 0x00000001 /* File was accessed */
#define IN_MODIFY 0x00000002 /* File was modified */
#define IN_ATTRIB 0x00000004 /* Metadata changed */
#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */
#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */
#define IN_OPEN 0x00000020 /* File was opened */
#define IN_MOVED_FROM 0x00000040 /* File was moved from X */
#define IN_MOVED_TO 0x00000080 /* File was moved to Y */
#define IN_CREATE 0x00000100 /* Subfile was created */
#define IN_DELETE 0x00000200 /* Subfile was deleted */
#define IN_DELETE_SELF 0x00000400 /* Self was deleted */
#define IN_MOVE_SELF 0x00000800 /* Self was moved */
#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted */
#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */
#define IN_IGNORED 0x00008000 /* File was ignored */
#define IN_ONLYDIR 0x01000000 /* Only watch the path if it is a directory. */
#define IN_DONT_FOLLOW 0x02000000 /* Do not follow a sym link. */
#define IN_EXCL_UNLINK 0x04000000 /* Exclude events on unlinked objects. */
#define IN_MASK_CREATE 0x10000000 /* Only create watches. */
#define IN_MASK_ADD 0x20000000 /* Add to the mask of an already existing watch */
#define IN_ISDIR 0x40000000 /* Event occurred against dir */
#define IN_ONESHOT 0x80000000 /* Only send event once */
#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close */
#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves */
#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \
IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | IN_MOVED_TO | \
IN_CREATE | IN_DELETE | IN_DELETE_SELF | IN_MOVE_SELF)
#define IN_CLOEXEC O_CLOEXEC /* Set close_on_exec for the inotify file descriptor */
#define IN_NONBLOCK O_NONBLOCK /* Set O_NONBLOCK for the inotify file descriptor */
/****************************************************************************
* Type Definitions
****************************************************************************/
struct inotify_event
{
int wd; /* Watch descriptor */
uint32_t mask; /* Mask describing event */
uint32_t cookie; /* Unique cookie associating related events (for rename(2)) */
uint32_t len; /* Size of name field */
char name[0]; /* Stub for possible name */
};
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
/****************************************************************************
* Name: inotify_init
*
* Description:
* Initializes a new inotify instance and returns a file descriptor
* associated with a new inotify event queue.
*
* Returned Value:
* On success, these system calls return a new file descriptor.
* On error, -1 is returned and errno is set appropriately.
*
****************************************************************************/
int inotify_init(void);
/****************************************************************************
* Name: inotify_init1
*
* Description:
* Initializes a new inotify instance and returns a file descriptor
* associated with a new inotify event queue.
*
* Input Parameters:
* flags - The following values are recognized in flags:
* IN_NONBLOCK - Set the O_NONBLOCK file status flag on the new open file
* description. Using this flag saves extra calls to fcntl(2) to achieve
* the same result.
* IN_CLOEXEC - Set the close-on-exec (FD_CLOEXEC) flag on the new file
* descriptor. See the description of the O_CLOEXEC flag in open(2) for
* reasons why this may be useful.
*
* Returned Value:
* On success, these system calls return a new file descriptor.
* On error, -1 is returned and errno is set appropriately.
*
****************************************************************************/
int inotify_init1(int flags);
/****************************************************************************
* Name: inotify_add_watch
*
* Description:
* Adds a new watch, or modifies an existing watch, for the file whose
* location is specified in pathname; the caller must have read permission
* for this file. The fd argument is a file descriptor referring to the
* inotify instance whose watch list is to be modified. The events to be
* monitored for pathname are specified in the mask bit-mask argument.
*
* Input Parameters:
* fd - The file descriptor associated with an instance of inotify.
* pathname - The path to the file to be monitored.
* mask - The bit mask of events to be monitored.
*
* Returned Value:
* On success, inotify_add_watch() returns a nonnegative watch descriptor.
* On error, -1 is returned and errno is set appropriately.
*
****************************************************************************/
int inotify_add_watch(int fd, FAR const char *pathname, uint32_t mask);
/****************************************************************************
* Name: inotify_rm_watch
*
* Description:
* Removes the watch associated with the watch descriptor wd from the
* inotify instance associated with the file descriptor fd.
*
* Input Parameters:
* fd - The file descriptor associated with an instance of inotify.
* wd - The watch descriptor to be removed.
*
* Returned Value:
* On success, inotify_rm_watch() returns zero. On error, -1 is returned
* and errno is set appropriately.
*
****************************************************************************/
int inotify_rm_watch(int fd, int wd);
#endif