mnt_new_monitor
mnt_ref_monitor
mnt_unref_monitor
-mnt_monitor_enable_userspace
mnt_monitor_enable_kernel
+mnt_monitor_enable_mountinfo
+mnt_monitor_enable_userspace
mnt_monitor_get_fd
mnt_monitor_close_fd
mnt_monitor_next_change
/* monitor.c */
enum {
MNT_MONITOR_TYPE_USERSPACE = 1, /* userspace mount options */
- MNT_MONITOR_TYPE_KERNEL /* kernel mount table */
+ MNT_MONITOR_TYPE_MOUNTINFO = 2, /* /proc/self/mountinfo based kernel monitor */
+
+ MNT_MONITOR_TYPE_KERNEL = MNT_MONITOR_TYPE_MOUNTINFO, /* deprecated */
};
extern struct libmnt_monitor *mnt_new_monitor(void);
extern void mnt_ref_monitor(struct libmnt_monitor *mn);
extern void mnt_unref_monitor(struct libmnt_monitor *mn);
+/* deprecated alias to mnt_monitor_enable_mountinfo() */
extern int mnt_monitor_enable_kernel(struct libmnt_monitor *mn, int enable);
+
+extern int mnt_monitor_enable_mountinfo(struct libmnt_monitor *mn, int enable);
extern int mnt_monitor_enable_userspace(struct libmnt_monitor *mn,
int enable, const char *filename);
MOUNT_2_42 {
mnt_context_enable_exclusive;
mnt_context_is_exclusive;
+ mnt_monitor_enable_mountinfo;
mnt_monitor_event_next_fs;
mnt_fs_is_moved;
mnt_fs_is_attached;
* const char *filename;
* struct libmount_monitor *mn = mnt_new_monitor();
*
- * mnt_monitor_enable_kernel(mn, TRUE));
+ * mnt_monitor_enable_mountinfo(mn, TRUE));
*
* printf("waiting for changes...\n");
* while (mnt_monitor_wait(mn, -1) > 0) {
goto err;
}
- } else if (strcmp(argv[i], "kernel") == 0) {
- if (mnt_monitor_enable_kernel(mn, TRUE)) {
+ } else if (strcmp(argv[i], "mountinfo") == 0) {
+ if (mnt_monitor_enable_mountinfo(mn, TRUE)) {
warn("failed to initialize kernel monitor");
goto err;
}
int main(int argc, char *argv[])
{
struct libmnt_test tss[] = {
- { "--epoll", test_epoll, "<userspace kernel veil ...> monitor in epoll" },
- { "--epoll-clean", test_epoll_cleanup, "<userspace kernel veil ...> monitor in epoll and clean events" },
- { "--wait", test_wait, "<userspace kernel veil ...> monitor wait function" },
+ { "--epoll", test_epoll, "<userspace mountinfo veil ...> monitor in epoll" },
+ { "--epoll-clean", test_epoll_cleanup, "<userspace mountinfo veil ...> monitor in epoll and clean events" },
+ { "--wait", test_wait, "<userspace mountinfo veil ...> monitor wait function" },
{ NULL }
};
};
/**
- * mnt_monitor_enable_kernel:
+ * mnt_monitor_enable_mountinfo:
* @mn: monitor
* @enable: 0 or 1
*
- * Enables or disables kernel VFS monitoring. If the monitor does not exist and
- * enable=1 then allocates new resources necessary for the monitor.
+ * Enables or disables kernel VFS monitoring based on /proc/self/mountinfo. If
+ * the monitor does not exist and enable=1 then allocates new resources
+ * necessary for the monitor.
*
* If the top-level monitor has been already created (by mnt_monitor_get_fd()
* or mnt_monitor_wait()) then it's updated according to @enable.
*
* Return: 0 on success and <0 on error
+ *
+ * Since: v2.42
*/
-int mnt_monitor_enable_kernel(struct libmnt_monitor *mn, int enable)
+int mnt_monitor_enable_mountinfo(struct libmnt_monitor *mn, int enable)
{
struct monitor_entry *me;
int rc = 0;
if (!mn)
return -EINVAL;
- me = monitor_get_entry(mn, MNT_MONITOR_TYPE_KERNEL, -1);
+ me = monitor_get_entry(mn, MNT_MONITOR_TYPE_MOUNTINFO, -1);
if (me) {
rc = monitor_modify_epoll(mn, me, enable);
if (!enable)
*/
me->events = EPOLLIN | EPOLLET;
- me->type = MNT_MONITOR_TYPE_KERNEL;
+ me->type = MNT_MONITOR_TYPE_MOUNTINFO;
me->opers = &mountinfo_opers;
me->path = strdup(_PATH_PROC_MOUNTINFO);
if (!me->path)
return rc;
}
+/**
+ * mnt_monitor_enable_kernel:
+ * @mn: monitor
+ * @enable: 0 or 1
+ *
+ * Deprecated alias to mnt_monitor_enable_mountinfo().
+ *
+ * Return: 0 on success and <0 on error
+ */
+int mnt_monitor_enable_kernel(struct libmnt_monitor *mn, int enable)
+ __attribute__((alias("mnt_monitor_enable_mountinfo")));
+
/**
* mnt_monitor_veil_kernel:
* @mn: monitor instance