PERFORCE change 120598 for review
Andrew Turner
andrew at FreeBSD.org
Wed May 30 07:23:49 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=120598
Change 120598 by andrew at andrew_hermies on 2007/05/30 07:22:48
Document what the look_for_updates function is ment to do and how it does it
Use default_check_period rather than a magic number
Push the selection of base dirs out of look_for_updates to let me read it from a config file later
Affected files ...
.. //depot/projects/soc2007/andrew-update/backend/facund-be.c#2 edit
Differences ...
==== //depot/projects/soc2007/andrew-update/backend/facund-be.c#2 (text+ko) ====
@@ -71,16 +71,27 @@
return 0;
}
+/*
+ * Loops looking for updates.
+ * There are two ways, the first is to use kqueue to wait
+ * for an EVFILT_VNODE event on the database directory with
+ * a timeout to allow for the directory to have changed
+ * between the time we last checked for updates and the
+ * call to kqueue. The second is to sleep for a set time
+ * period. The only advantage the kqueue method has over
+ * sleeping is we may see the update sooner this way.
+ */
void *
-look_for_updates(void *data __unused)
+look_for_updates(void *data)
{
- const char *base_dirs[] = { "/", NULL };
char db_dir[PATH_MAX];
struct timespec timeout;
int *dir_fd, kq, use_kqueue, found_updates;
struct kevent *events, changes;
size_t pos, dir_count;
+ char **base_dirs;
+ base_dirs = data;
for (dir_count = 0; base_dirs[dir_count] != NULL; dir_count++)
continue;
@@ -110,7 +121,7 @@
found_updates = 0;
/* XXX This timeout will be bigger in a live system */
- timeout.tv_sec = 10;
+ timeout.tv_sec = default_check_period;
timeout.tv_nsec = 0;
kq = kqueue();
if (kq == -1)
@@ -140,7 +151,7 @@
use_kqueue = 1;
}
} else {
- sleep(10);
+ sleep(default_check_period);
}
}
return NULL;
@@ -149,7 +160,8 @@
int
main(int argc __unused, char *argv[] __unused)
{
- look_for_updates(NULL);
+ const char *base_dirs[] = { "/", NULL };
+ look_for_updates(base_dirs);
return 0;
}
More information about the p4-projects
mailing list