[asterisk-commits] tilghman: trunk r251263 - in /trunk: ./ include/asterisk/ main/stdtime/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sun Mar 7 23:15:03 CST 2010
Author: tilghman
Date: Sun Mar 7 23:15:01 2010
New Revision: 251263
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=251263
Log:
Remove portions that weren't meant to be committed for the OS X compat fix
Modified:
trunk/configure
trunk/configure.ac
trunk/include/asterisk/autoconfig.h.in
trunk/main/stdtime/localtime.c
Modified: trunk/configure.ac
URL: http://svnview.digium.com/svn/asterisk/trunk/configure.ac?view=diff&rev=251263&r1=251262&r2=251263
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Sun Mar 7 23:15:01 2010
@@ -317,7 +317,6 @@
AST_EXT_LIB_SETUP([IODBC], [iODBC], [iodbc])
AST_EXT_LIB_SETUP([ISDNNET], [ISDN4Linux Library], [isdnnet])
AST_EXT_LIB_SETUP([JACK], [Jack Audio Connection Kit], [jack])
-AST_EXT_LIB_SETUP([KQUEUE], [kqueue support], [kqueue])
AST_EXT_LIB_SETUP([LDAP], [OpenLDAP], [ldap])
AST_EXT_LIB_SETUP([LIBXML2], [LibXML2], [libxml2])
AST_EXT_LIB_SETUP([LTDL], [libtool], [ltdl])
@@ -1406,9 +1405,6 @@
AST_EXT_LIB_CHECK([JACK], [jack], [jack_activate], [jack/jack.h])
-# BSD (and OS X) equivalent of inotify
-AST_EXT_LIB_CHECK([KQUEUE], [c], [kqueue], [sys/event.h])
-
# Needed by unixodbc
AST_EXT_LIB_CHECK([LTDL], [ltdl], [lt_dlinit], [ltdl.h], [])
Modified: trunk/include/asterisk/autoconfig.h.in
URL: http://svnview.digium.com/svn/asterisk/trunk/include/asterisk/autoconfig.h.in?view=diff&rev=251263&r1=251262&r2=251263
==============================================================================
--- trunk/include/asterisk/autoconfig.h.in (original)
+++ trunk/include/asterisk/autoconfig.h.in Sun Mar 7 23:15:01 2010
@@ -424,12 +424,6 @@
/* Define to the version of the Jack Audio Connection Kit library. */
#undef HAVE_JACK_VERSION
-
-/* Define to 1 if you have the kqueue support library. */
-#undef HAVE_KQUEUE
-
-/* Define to the version of the kqueue support library. */
-#undef HAVE_KQUEUE_VERSION
/* Define to 1 if you have the OpenLDAP library. */
#undef HAVE_LDAP
Modified: trunk/main/stdtime/localtime.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/stdtime/localtime.c?view=diff&rev=251263&r1=251262&r2=251263
==============================================================================
--- trunk/main/stdtime/localtime.c (original)
+++ trunk/main/stdtime/localtime.c Sun Mar 7 23:15:01 2010
@@ -53,13 +53,6 @@
#include <float.h>
#ifdef HAVE_INOTIFY
#include <sys/inotify.h>
-#elif HAVE_KQUEUE
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/event.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <fcntl.h>
#endif
#include "private.h"
@@ -159,9 +152,6 @@
struct lsinfo lsis[TZ_MAX_LEAPS];
#ifdef HAVE_INOTIFY
int wd[2];
-#elif defined(HAVE_KQUEUE)
- int fd;
- DIR *dir;
#else
time_t mtime[2];
#endif
@@ -326,129 +316,6 @@
| IN_DONT_FOLLOW
#endif
);
- }
-}
-#elif HAVE_KQUEUE
-static int queue_fd = -1;
-
-static void *kqueue_daemon(void *data)
-{
- struct kevent kev;
- struct state *sp;
- struct timespec no_wait = { 0, 1 };
-
- if ((queue_fd = kqueue()) < 0) {
- ast_log(LOG_ERROR, "Unable to initialize kqueue(): %s\n", strerror(errno));
- inotify_thread = AST_PTHREADT_NULL;
- ast_cond_signal(&initialization);
- return NULL;
- }
-
- for (;/*ever*/;) {
- if (kevent(queue_fd, NULL, 0, &kev, 1, NULL) < 0) {
- continue;
- }
-
- sp = kev.udata;
-
- /*!\note
- * If the file event fired, then the file was removed, so we'll need
- * to reparse the entry. The directory event is a bit more
- * interesting. Unfortunately, the queue doesn't contain information
- * about the file that changed (only the directory itself), so unless
- * we kept a record of the directory state before, it's not really
- * possible to know what change occurred. But if we act paranoid and
- * just purge the associated file, then it will get reparsed, and
- * everything works fine. It may be more work, but it's a vast
- * improvement over the alternative implementation, which is to stat
- * the file repeatedly in what is essentially a busy loop. */
- AST_LIST_REMOVE(&zonelist, sp, list);
-
-#ifndef EV_RECEIPT
-#define EV_RECEIPT 0
-#endif
- /* If the directory event fired, remove the file event */
- EV_SET(&kev, sp->fd, EVFILT_VNODE, EV_DELETE | EV_RECEIPT, 0, 0, NULL);
- kevent(queue_fd, &kev, 1, NULL, 0, &no_wait);
- close(sp->fd);
-
- if (sp->dir) {
- /* If the file event fired, remove the directory event */
- EV_SET(&kev, dirfd(sp->dir), EVFILT_VNODE, EV_DELETE | EV_RECEIPT, 0, 0, NULL);
- kevent(queue_fd, &kev, 1, NULL, 0, &no_wait);
- closedir(sp->dir);
- }
- free(sp);
- }
-}
-
-static void add_notify(struct state *sp, const char *path)
-{
- struct kevent kev;
- struct timespec no_wait = { 0, 1 };
- char watchdir[PATH_MAX + 1];
-
- if (inotify_thread == AST_PTHREADT_NULL) {
- ast_cond_init(&initialization, NULL);
- ast_mutex_init(&initialization_lock);
- ast_mutex_lock(&initialization_lock);
- if (!(ast_pthread_create_background(&inotify_thread, NULL, kqueue_daemon, NULL))) {
- /* Give the thread a chance to initialize */
- ast_cond_wait(&initialization, &initialization_lock);
- }
- ast_mutex_unlock(&initialization_lock);
- }
-
- if (queue_fd < 0) {
- /* Error already sent */
- return;
- }
-
- if (readlink(path, watchdir, sizeof(watchdir) - 1) != -1) {
- /* Special -- watch the directory for changes, because we cannot directly watch a symlink */
- char *slash;
- DIR *dir;
-
- if ((slash = strrchr(watchdir, '/'))) {
- *slash = '\0';
- }
- if (!(sp->dir = opendir(watchdir))) {
- ast_log(LOG_ERROR, "Unable to watch directory with symlink '%s': %s\n", path, strerror(errno));
- goto watch_file;
- }
-
- /*!\note
- * You may be wondering about whether there is a potential conflict
- * with the kqueue interface, because we might be watching the same
- * directory for multiple zones. The answer is no, because kqueue
- * looks at the descriptor to know if there's a duplicate. Since we
- * (may) have opened the directory multiple times, each represents a
- * different event, so no replacement of an existing event will occur.
- * Likewise, there's no potential leak of a descriptor.
- */
- EV_SET(&kev, dirfd(sp->dir), EVFILT_VNODE, EV_ADD | EV_RECEIPT | EV_ONESHOT,
- NOTE_WRITE | NOTE_EXTEND | NOTE_REVOKE, 0, sp);
- if (kevent(queue_fd, &kev, 1, NULL, 0, &no_wait) < 0 && errno != 0) {
- ast_log(LOG_ERROR, "Unable to watch '%s': %s\n", watchdir, strerror(errno));
- closedir(dir);
- goto watch_file;
- }
- }
-
-watch_file:
- if ((sp->fd = open(path, O_RDONLY)) < 0) {
- ast_log(LOG_ERROR, "Unable to watch '%s' for changes: %s\n", path, strerror(errno));
- return;
- }
-
- EV_SET(&kev, sp->fd, EVFILT_VNODE, EV_ADD | EV_RECEIPT | EV_ONESHOT, NOTE_DELETE, 0, sp);
- if (kevent(queue_fd, &kev, 1, NULL, 0, &no_wait) < 0 && errno != 0) {
- /* According to the API docs, we may get -1 return value, due to the
- * NULL space for a returned event, but errno should be 0 unless
- * there's a real error. Otherwise, kevent will return 0 to indicate
- * that the time limit expired. */
- ast_log(LOG_ERROR, "Unable to watch '%s': %s\n", path, strerror(errno));
- close(sp->fd);
}
}
#else
More information about the asterisk-commits
mailing list