170 lines
7.2 KiB
C
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
|