void dvr_inotify_done ( void );
void dvr_inotify_add ( dvr_entry_t *de );
void dvr_inotify_del ( dvr_entry_t *de );
+int dvr_inotify_count( void );
/**
* Cutpoints support
return strcmp(((dvr_inotify_entry_t*)a)->path, ((dvr_inotify_entry_t*)b)->path);
}
+
/**
* Initialise threads
*/
dvr_inotify_entry_skel->path = dirname(path);
e = RB_INSERT_SORTED(&_inot_tree, dvr_inotify_entry_skel, link, _str_cmp);
- if (!e) {
- e = dvr_inotify_entry_skel;
- SKEL_USED(dvr_inotify_entry_skel);
- e->path = strdup(e->path);
- e->fd = inotify_add_watch(_inot_fd, e->path, EVENT_MASK);
- }
+ if (e)
+ return;
+
+ e = dvr_inotify_entry_skel;
+ SKEL_USED(dvr_inotify_entry_skel);
+ e->path = strdup(e->path);
+ e->fd = inotify_add_watch(_inot_fd, e->path, EVENT_MASK);
LIST_INSERT_HEAD(&e->entries, de, de_inotify_link);
}
}
+/*
+ * return count of registered entries (for debugging)
+ */
+int dvr_inotify_count ( void )
+{
+ dvr_entry_t *det = NULL;
+ dvr_inotify_entry_t *e;
+ int count = 0;
+ lock_assert(&global_lock);
+ RB_FOREACH(e, &_inot_tree, link)
+ LIST_FOREACH(det, &e->entries, de_inotify_link)
+ count++;
+ return count;
+}
+
/*
* Find inotify entry
*/