]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
WiP'
authorWitold Kręcicki <wpk@isc.org>
Mon, 6 Aug 2018 11:00:55 +0000 (13:00 +0200)
committerWitold Kręcicki <wpk@isc.org>
Fri, 10 Aug 2018 08:26:26 +0000 (10:26 +0200)
lib/isc/app_api.c
lib/isc/include/isc/task.h
lib/isc/include/isc/timer.h
lib/isc/lib.c
lib/isc/mem.c
lib/isc/socket_api.c
lib/isc/task.c
lib/isc/timer.c
lib/isc/unix/app.c
lib/isc/unix/socket.c

index e4276f44c687368d99419aa3da665cda9a2cacbd..6903108ea6c879a322b18194c9449bef61e993c0 100644 (file)
 #include <isc/once.h>
 #include <isc/util.h>
 
-static isc_mutex_t createlock;
-static isc_once_t once = ISC_ONCE_INIT;
-static isc_appctxcreatefunc_t appctx_createfunc = NULL;
 static bool is_running = false;
 
 #define ISCAPI_APPMETHODS_VALID(m) ISC_MAGIC_VALID(m, ISCAPI_APPMETHODS_MAGIC)
 
-static void
-initialize(void) {
-       RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_app_register(isc_appctxcreatefunc_t createfunc) {
-       isc_result_t result = ISC_R_SUCCESS;
-
-       RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);
-
-       LOCK(&createlock);
-       if (appctx_createfunc == NULL)
-               appctx_createfunc = createfunc;
-       else
-               result = ISC_R_EXISTS;
-       UNLOCK(&createlock);
-
-       return (result);
-}
-
 isc_result_t
 isc_appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) {
        return (isc__appctx_create(mctx, ctxp));
index 72be4bf14b47ef27abcf2429f6decbb329f05bba..3e14063fae43b294699271134e0f40d612cd0620 100644 (file)
@@ -102,42 +102,6 @@ typedef enum {
                isc_taskmgrmode_privileged
 } isc_taskmgrmode_t;
 
-/*% Task and task manager methods */
-typedef struct isc_taskmgrmethods {
-       void            (*destroy)(isc_taskmgr_t **managerp);
-       void            (*setmode)(isc_taskmgr_t *manager,
-                                  isc_taskmgrmode_t mode);
-       isc_taskmgrmode_t (*mode)(isc_taskmgr_t *manager);
-       isc_result_t    (*taskcreate)(isc_taskmgr_t *manager,
-                                     unsigned int quantum,
-                                     isc_task_t **taskp);
-       void (*setexcltask)(isc_taskmgr_t *mgr, isc_task_t *task);
-       isc_result_t (*excltask)(isc_taskmgr_t *mgr, isc_task_t **taskp);
-} isc_taskmgrmethods_t;
-
-typedef struct isc_taskmethods {
-       void (*attach)(isc_task_t *source, isc_task_t **targetp);
-       void (*detach)(isc_task_t **taskp);
-       void (*destroy)(isc_task_t **taskp);
-       void (*send)(isc_task_t *task, isc_event_t **eventp);
-       void (*sendanddetach)(isc_task_t **taskp, isc_event_t **eventp);
-       unsigned int (*unsend)(isc_task_t *task, void *sender, isc_eventtype_t type,
-                              void *tag, isc_eventlist_t *events);
-       isc_result_t (*onshutdown)(isc_task_t *task, isc_taskaction_t action,
-                                  void *arg);
-       void (*shutdown)(isc_task_t *task);
-       void (*setname)(isc_task_t *task, const char *name, void *tag);
-       unsigned int (*purgeevents)(isc_task_t *task, void *sender,
-                                   isc_eventtype_t type, void *tag);
-       unsigned int (*purgerange)(isc_task_t *task, void *sender,
-                                  isc_eventtype_t first, isc_eventtype_t last,
-                                  void *tag);
-       isc_result_t (*beginexclusive)(isc_task_t *task);
-       void (*endexclusive)(isc_task_t *task);
-    void (*setprivilege)(isc_task_t *task, bool priv);
-    bool (*privilege)(isc_task_t *task);
-} isc_taskmethods_t;
-
 /*%
  * This structure is actually just the common prefix of a task manager
  * object implementation's version of an isc_taskmgr_t.
@@ -150,7 +114,6 @@ typedef struct isc_taskmethods {
 struct isc_taskmgr {
        unsigned int            impmagic;
        unsigned int            magic;
-       isc_taskmgrmethods_t    *methods;
 };
 
 #define ISCAPI_TASKMGR_MAGIC   ISC_MAGIC('A','t','m','g')
@@ -164,7 +127,6 @@ struct isc_taskmgr {
 struct isc_task {
        unsigned int            impmagic;
        unsigned int            magic;
-       isc_taskmethods_t       *methods;
 };
 
 #define ISCAPI_TASK_MAGIC      ISC_MAGIC('A','t','s','t')
index 40aa5a678c428deabe7ef49156d3028cd2e52a35..cbc3153dd94ae0dab54dbb5f32a531d464e84701 100644 (file)
@@ -99,29 +99,6 @@ typedef struct isc_timerevent {
 #define ISC_TIMEREVENT_LIFE            (ISC_EVENTCLASS_TIMER + 3)
 #define ISC_TIMEREVENT_LASTEVENT       (ISC_EVENTCLASS_TIMER + 65535)
 
-/*% Timer and timer manager methods */
-typedef struct {
-       void            (*destroy)(isc_timermgr_t **managerp);
-       isc_result_t    (*timercreate)(isc_timermgr_t *manager,
-                                      isc_timertype_t type,
-                                      const isc_time_t *expires,
-                                      const isc_interval_t *interval,
-                                      isc_task_t *task,
-                                      isc_taskaction_t action,
-                                      void *arg,
-                                      isc_timer_t **timerp);
-} isc_timermgrmethods_t;
-
-typedef struct {
-       void            (*attach)(isc_timer_t *timer, isc_timer_t **timerp);
-       void            (*detach)(isc_timer_t **timerp);
-       isc_result_t    (*reset)(isc_timer_t *timer, isc_timertype_t type,
-                                const isc_time_t *expires,
-                                const isc_interval_t *interval,
-                                bool purge);
-       isc_result_t    (*touch)(isc_timer_t *timer);
-} isc_timermethods_t;
-
 /*%
  * This structure is actually just the common prefix of a timer manager
  * object implementation's version of an isc_timermgr_t.
@@ -134,7 +111,6 @@ typedef struct {
 struct isc_timermgr {
        unsigned int            impmagic;
        unsigned int            magic;
-       isc_timermgrmethods_t   *methods;
 };
 
 #define ISCAPI_TIMERMGR_MAGIC          ISC_MAGIC('A','t','m','g')
@@ -148,7 +124,6 @@ struct isc_timermgr {
 struct isc_timer {
        unsigned int            impmagic;
        unsigned int            magic;
-       isc_timermethods_t      *methods;
 };
 
 #define ISCAPI_TIMER_MAGIC     ISC_MAGIC('A','t','m','r')
index d7957b2abf4e9be1c38f39e3ae1111a5d82f4066..43bef6cd02b8d885e1e9136a364a77ecf14f95ab 100644 (file)
@@ -79,5 +79,5 @@ isc_lib_initmsgcat(void) {
 
 void
 isc_lib_register(void) {
-       printf("ISC_LIB_REGISTER\n");
+       isc_bind9 = ISC_FALSE;
 }
index 6a7fb207ad5608b01d079cd333512245f6f04d56..fd4b13b6c49798ca1d57c16e5875cb7bdfc79842 100644 (file)
@@ -110,7 +110,6 @@ static ISC_LIST(isc__mem_t) contexts;
 
 static isc_once_t              once = ISC_ONCE_INIT;
 static isc_mutex_t             contextslock;
-static isc_mutex_t             createlock;
 
 /*%
  * Total size of lost memory due to a bug of external library.
@@ -787,7 +786,6 @@ default_memfree(void *arg, void *ptr) {
 
 static void
 initialize_action(void) {
-       RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
        RUNTIME_CHECK(isc_mutex_init(&contextslock) == ISC_R_SUCCESS);
        ISC_LIST_INIT(contexts);
        totallost = 0;
@@ -2165,11 +2163,6 @@ isc_mempool_getfillcount(isc_mempool_t *mpctx0) {
        return (fillcount);
 }
 
-isc_result_t
-isc__mem_register(void) {
-       return (isc_mem_register(isc_mem_create2));
-}
-
 void
 isc__mem_printactive(isc_mem_t *ctx0, FILE *file) {
 #if ISC_MEM_TRACKLINES
@@ -2616,39 +2609,11 @@ isc_mem_renderjson(json_object *memobj) {
 }
 #endif /* HAVE_JSON */
 
-static isc_memcreatefunc_t mem_createfunc = NULL;
-
-isc_result_t
-isc_mem_register(isc_memcreatefunc_t createfunc) {
-       isc_result_t result = ISC_R_SUCCESS;
-
-       RUNTIME_CHECK(isc_once_do(&once, initialize_action) == ISC_R_SUCCESS);
-
-       LOCK(&createlock);
-       if (mem_createfunc == NULL)
-               mem_createfunc = createfunc;
-       else
-               result = ISC_R_EXISTS;
-       UNLOCK(&createlock);
-
-       return (result);
-}
-
-
 isc_result_t
 isc__mem_create2(size_t init_max_size, size_t target_size, isc_mem_t **mctxp,
                 unsigned int flags)
 {
-       isc_result_t result;
-
-       LOCK(&createlock);
-
-       REQUIRE(mem_createfunc != NULL);
-       result = (*mem_createfunc)(init_max_size, target_size, mctxp, flags);
-
-       UNLOCK(&createlock);
-
-       return (result);
+       return (isc_mem_create2(init_max_size, target_size, mctxp, flags));
 }
 
 isc_result_t
index 00e33a437a162f27deb37f8e4851452806a2d391..7b847a2d72d3f93abde3b05a5bdbeba5da96488a 100644 (file)
 #include <isc/socket.h>
 #include <isc/util.h>
 
-static isc_mutex_t createlock;
-static isc_once_t once = ISC_ONCE_INIT;
-static isc_socketmgrcreatefunc_t socketmgr_createfunc = NULL;
-
-static void
-initialize(void) {
-       RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_socket_register(isc_socketmgrcreatefunc_t createfunc) {
-       isc_result_t result = ISC_R_SUCCESS;
-
-       RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);
-
-       LOCK(&createlock);
-       if (socketmgr_createfunc == NULL)
-               socketmgr_createfunc = createfunc;
-       else
-               result = ISC_R_EXISTS;
-       UNLOCK(&createlock);
-
-       return (result);
-}
-
 isc_result_t
 isc_socketmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
                          isc_socketmgr_t **managerp)
 {
        isc_result_t result;
 
-       LOCK(&createlock);
-
-       REQUIRE(socketmgr_createfunc != NULL);
-       result = (*socketmgr_createfunc)(mctx, managerp);
-
-       UNLOCK(&createlock);
+       result = isc__socketmgr_create(mctx, managerp);
 
        if (result == ISC_R_SUCCESS)
                isc_appctx_setsocketmgr(actx, *managerp);
index 99bf8d6dcf0e8b530e38123a827e973f20263a36..b902fafef1fb1f599cb1fd9a419170a3e051f565 100644 (file)
@@ -236,49 +236,6 @@ pop_readyq(isc__taskmgr_t *manager);
 static inline void
 push_readyq(isc__taskmgr_t *manager, isc__task_t *task);
 
-static struct isc__taskmethods {
-       isc_taskmethods_t methods;
-
-       /*%
-        * The following are defined just for avoiding unused static functions.
-        */
-       void *purgeevent, *unsendrange, *getname, *gettag,
-            *getcurrenttime, *getcurrenttimex;
-} taskmethods = {
-       {
-               isc__task_attach,
-               isc__task_detach,
-               isc__task_destroy,
-               isc__task_send,
-               isc__task_sendanddetach,
-               isc__task_unsend,
-               isc__task_onshutdown,
-               isc__task_shutdown,
-               isc__task_setname,
-               isc__task_purge,
-               isc__task_purgerange,
-               isc__task_beginexclusive,
-               isc__task_endexclusive,
-               isc__task_setprivilege,
-               isc__task_privilege
-       },
-       (void *)isc_task_purgeevent,
-       (void *)isc__task_unsendrange,
-       (void *)isc__task_getname,
-       (void *)isc__task_gettag,
-       (void *)isc__task_getcurrenttime,
-       (void *)isc__task_getcurrenttimex
-};
-
-static isc_taskmgrmethods_t taskmgrmethods = {
-       isc__taskmgr_destroy,
-       isc__taskmgr_setmode,
-       isc__taskmgr_mode,
-       isc__task_create,
-       isc_taskmgr_setexcltask,
-       isc_taskmgr_excltask
-};
-
 /***
  *** Tasks.
  ***/
@@ -367,7 +324,6 @@ isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum,
                return (ISC_R_SHUTTINGDOWN);
        }
 
-       task->common.methods = (isc_taskmethods_t *)&taskmethods;
        task->common.magic = ISCAPI_TASK_MAGIC;
        task->common.impmagic = TASK_MAGIC;
        *taskp = (isc_task_t *)task;
@@ -1299,7 +1255,6 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
        manager = isc_mem_get(mctx, sizeof(*manager));
        if (manager == NULL)
                return (ISC_R_NOMEMORY);
-       manager->common.methods = &taskmgrmethods;
        manager->common.impmagic = TASK_MANAGER_MAGIC;
        manager->common.magic = ISCAPI_TASKMGR_MAGIC;
        manager->mode = isc_taskmgrmode_normal;
@@ -1633,11 +1588,6 @@ isc__task_privilege(isc_task_t *task0) {
        return (priv);
 }
 
-isc_result_t
-isc__task_register(void) {
-       return (isc_task_register(isc__taskmgr_create));
-}
-
 bool
 isc_task_exiting(isc_task_t *t) {
        isc__task_t *task = (isc__task_t *)t;
@@ -1843,31 +1793,6 @@ isc_taskmgr_renderjson(isc_taskmgr_t *mgr0, json_object *tasks) {
 #endif
 
 
-static isc_mutex_t createlock;
-static isc_once_t once = ISC_ONCE_INIT;
-static isc_taskmgrcreatefunc_t taskmgr_createfunc = NULL;
-
-static void
-initialize(void) {
-       RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_task_register(isc_taskmgrcreatefunc_t createfunc) {
-       isc_result_t result = ISC_R_SUCCESS;
-
-       RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);
-
-       LOCK(&createlock);
-       if (taskmgr_createfunc == NULL)
-               taskmgr_createfunc = createfunc;
-       else
-               result = ISC_R_EXISTS;
-       UNLOCK(&createlock);
-
-       return (result);
-}
-
 isc_result_t
 isc_taskmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
                        unsigned int workers, unsigned int default_quantum,
@@ -1875,14 +1800,9 @@ isc_taskmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
 {
        isc_result_t result;
 
-       LOCK(&createlock);
-
-       REQUIRE(taskmgr_createfunc != NULL);
-       result = (*taskmgr_createfunc)(mctx, workers, default_quantum,
+       result = isc__taskmgr_create(mctx, workers, default_quantum,
                                       managerp);
 
-       UNLOCK(&createlock);
-
        if (result == ISC_R_SUCCESS)
                isc_appctx_settaskmgr(actx, *managerp);
 
index db979a9580462e6745ce844870ad000f7885cdab..f20fcd0367cb6ae0973ac517073ba7ce3ca1e845 100644 (file)
@@ -901,48 +901,13 @@ isc__timermgr_destroy(isc_timermgr_t **managerp) {
 
 }
 
-isc_result_t
-isc__timer_register(void) {
-       return (isc_timer_register(isc__timermgr_create));
-}
-
-static isc_mutex_t createlock;
-static isc_once_t once = ISC_ONCE_INIT;
-static isc_timermgrcreatefunc_t timermgr_createfunc = NULL;
-
-static void
-initialize(void) {
-       RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_timer_register(isc_timermgrcreatefunc_t createfunc) {
-       isc_result_t result = ISC_R_SUCCESS;
-
-       RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);
-
-       LOCK(&createlock);
-       if (timermgr_createfunc == NULL)
-               timermgr_createfunc = createfunc;
-       else
-               result = ISC_R_EXISTS;
-       UNLOCK(&createlock);
-
-       return (result);
-}
-
 isc_result_t
 isc_timermgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
                         isc_timermgr_t **managerp)
 {
        isc_result_t result;
 
-       LOCK(&createlock);
-
-       REQUIRE(timermgr_createfunc != NULL);
-       result = (*timermgr_createfunc)(mctx, managerp);
-
-       UNLOCK(&createlock);
+       result = isc__timermgr_create(mctx, managerp);
 
        if (result == ISC_R_SUCCESS)
                isc_appctx_settimermgr(actx, *managerp);
index e0a5f6de04d5a8937ad6f86b8fcacd6c6c9b0ea3..b86da1f8724bfecead0f96eb0c02bcc7065c6702 100644 (file)
@@ -776,9 +776,4 @@ isc__appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) {
        ctx->timermgr = timermgr;
 }
 
-isc_result_t
-isc__app_register(void) {
-       return (isc_app_register(isc__appctx_create));
-}
-
 #include "../app_api.c"
index 1030c0691c1cdadc65278de6a07df6c7091ab4e1..b7ced512b896fd362d870ad47e112b124d0516f0 100644 (file)
@@ -6235,11 +6235,6 @@ isc__socket_gettag(isc_socket_t *socket0) {
        return (sock->tag);
 }
 
-isc_result_t
-isc__socket_register(void) {
-       return (isc_socket_register(isc__socketmgr_create));
-}
-
 int
 isc__socket_getfd(isc_socket_t *socket0) {
        isc__socket_t *sock = (isc__socket_t *)socket0;