Пример #1
0
static int slowlog_statistics_init(void)
{
    int i;

    slowlog_statistics = NULL;
    today_idx = 0;
    if (statistics_period == 0 || statistics_days == 0)
        return NC_OK;

    pthread_mutex_init(&statistics_locker,NULL);
    slowlog_statistics = nc_calloc(statistics_days,sizeof(struct statistics_oneday));
    if (slowlog_statistics == NULL)
        return NC_ENOMEM;

    for (i = 0; i < statistics_days; i ++) {
        slowlog_statistics[i].year = 0;
        slowlog_statistics[i].mon = 0;
        slowlog_statistics[i].day = 0;
        slowlog_statistics[i].periods = nc_calloc(statistics_period,sizeof(long long));
        if (slowlog_statistics[i].periods == NULL)
            return NC_ENOMEM;
    }

    return NC_OK;
}
Пример #2
0
struct event_base *
event_base_create(int nevent, event_cb_t cb)
{
    struct event_base *evb;
    int status, kq;
    struct kevent *change, *event;

    ASSERT(nevent > 0);

    kq = kqueue();
    if (kq < 0) {
        log_error("kqueue failed: %s", strerror(errno));
        return NULL;
    }

    change = nc_calloc(nevent, sizeof(*change));
    if (change == NULL) {
        status = close(kq);
        if (status < 0) {
            log_error("close kq %d failed, ignored: %s", kq, strerror(errno));
        }
        return NULL;
    }

    event = nc_calloc(nevent, sizeof(*event));
    if (event == NULL) {
        nc_free(change);
        status = close(kq);
        if (status < 0) {
            log_error("close kq %d failed, ignored: %s", kq, strerror(errno));
        }
        return NULL;
    }

    evb = nc_alloc(sizeof(*evb));
    if (evb == NULL) {
        nc_free(change);
        nc_free(event);
        status = close(kq);
        if (status < 0) {
            log_error("close kq %d failed, ignored: %s", kq, strerror(errno));
        }
        return NULL;
    }

    evb->kq = kq;
    evb->change = change;
    evb->nchange = 0;
    evb->event = event;
    evb->nevent = nevent;
    evb->nreturned = 0;
    evb->nprocessed = 0;
    evb->cb = cb;

    log_debug(LOG_INFO, "kq %d with nevent %d", evb->kq, evb->nevent);

    return evb;
}
Пример #3
0
static int
nc_event_init(struct nc_event *event)
{
    struct nc_event_state *e_state;

    e_state = nc_alloc(sizeof(*e_state));
    if (e_state == NULL) {
        return -1;
    }
    e_state->events = nc_calloc(event->nevent, sizeof(struct epoll_event));
    if (e_state->events == NULL) {
        nc_free(e_state);
        return -1;
    }
    e_state->ep = epoll_create(event->nevent);
    if (e_state->ep < 0) {
        nc_free(e_state->events);
        nc_free(e_state);
        log_error("epoll create of size %d failed: %s", event->nevent, 
                strerror(errno));
        return -1;
    }
    log_debug(LOG_INFO, "e %d with nevent %d", e_state->ep, event->nevent);
    event->event_data = e_state;
    return 0;
}
Пример #4
0
struct evcenter *
event_init(int size)
{
    int status, ep;
    struct kevent *event;
    struct fired_event *fired_events;
    struct evcenter *center;

    center = nc_zalloc(sizeof(struct evcenter));
    if (center == NULL) {
        log_error("center create failed: %s", strerror(errno));
        return NULL;
    }

    ep = kqueue();
    if (ep < 0) {
        nc_free(center);
        log_error("kqueue create failed: %s", strerror(errno));
        return NULL;
    }

    event = nc_calloc(size, sizeof(struct kevent));
    fired_events = nc_calloc(size, sizeof(struct fired_event));
    if (event == NULL || fired_events == NULL) {
        status = close(ep);
        nc_free(center);
        if (event != NULL)
            nc_free(event);
        if (fired_events != NULL)
            nc_free(fired_events);
        if (status < 0) {
            log_error("close e %d failed, ignored: %s", ep, strerror(errno));
        }
        return NULL;
    }

    center->ep = ep;
    center->event = event;
    center->nevent = size;
    center->fired_events = fired_events;

    log_debug(LOG_INFO, "e %d with nevent %d", center->ep,
              center->nevent);

    return center;
}
Пример #5
0
struct evbase * 
evbase_create(int nevent, void (*callback_fp)(void *, uint32_t))
{

    struct evbase *evb;
    int status, ep;
    struct epoll_event *event;

    if (nevent <= 0) {
        log_error("nevent has to be positive %d", nevent);
        return NULL;
    }

    ep = epoll_create(nevent);
    if (ep < 0) {
        log_error("epoll create of size %d failed: %s", nevent, strerror(errno));
        return NULL;
    }

    event = nc_calloc(nevent, sizeof(*event));
    if (event == NULL) {
        status = close(ep);
        if (status < 0) {
            log_error("close e %d failed, ignored: %s", ep, strerror(errno));
        }
        return NULL;
    }

    evb = nc_alloc(sizeof(*evb));
    if (evb == NULL) {
        nc_free(event);
        status = close(ep);
        if (status < 0) {
            log_error("close e %d failed, ignored: %s", ep, strerror(errno));
        }
        return NULL;

    }

    evb->nevent = nevent;
    evb->ep = ep;
    evb->event = event;
    evb->callback_fp = callback_fp;

    log_debug(LOG_INFO, "e %d with nevent %d", evb->ep,
              evb->nevent);

    return evb;
}
Пример #6
0
struct event_base *
event_base_create(int nevent, event_cb_t cb)
{
    struct event_base *evb;
    int status, evp;
    port_event_t *event;

    ASSERT(nevent > 0);

    evp = port_create();
    if (evp < 0) {
        log_error("port create failed: %s", strerror(errno));
        return NULL;
    }

    event = nc_calloc(nevent, sizeof(*event));
    if (event == NULL) {
        status = close(evp);
        if (status < 0) {
            log_error("close evp %d failed, ignored: %s", evp, strerror(errno));
        }
        return NULL;
    }

    evb = nc_alloc(sizeof(*evb));
    if (evb == NULL) {
        nc_free(event);
        status = close(evp);
        if (status < 0) {
            log_error("close evp %d failed, ignored: %s", evp, strerror(errno));
        }
        return NULL;
    }

    evb->evp = evp;
    evb->event = event;
    evb->nevent = nevent;
    evb->cb = cb;

    log_info("evp %d with nevent %d", evb->evp, evb->nevent);

    return evb;
}
Пример #7
0
struct event_base *
event_base_create(int nevent, event_cb_t cb)
{
    struct event_base *evb;
    int status, ep;
    struct epoll_event *event;

    ASSERT(nevent > 0);

    ep = epoll_create(nevent);
    if (ep < 0) {
        log_error("epoll create of size %d failed: %s", nevent, strerror(errno));
        return NULL;
    }

    event = nc_calloc(nevent, sizeof(*event));
    if (event == NULL) {
        status = close(ep);
        if (status < 0) {
            log_error("close e %d failed, ignored: %s", ep, strerror(errno));
        }
        return NULL;
    }

    evb = nc_alloc(sizeof(*evb));
    if (evb == NULL) {
        nc_free(event);
        status = close(ep);
        if (status < 0) {
            log_error("close e %d failed, ignored: %s", ep, strerror(errno));
        }
        return NULL;
    }

    evb->ep = ep;
    evb->event = event;
    evb->nevent = nevent;
    evb->cb = cb;

    log_debug(LOG_INFO, "e %d with nevent %d", evb->ep, evb->nevent);

    return evb;
}
Пример #8
0
struct evbase *
evbase_create(int nevent, void (*callback_fp)(void *, uint32_t))
{

    struct evbase *evb;
    int status, kq;
    struct kevent *changes, *kevents;

    if (nevent <= 0) {
        log_error("nevent has to be positive %d", nevent);
        return NULL;
    }

    /* Initialize the kernel queue */
    if ((kq = kqueue()) == -1) {
        log_error("kernel queue create failed: %s", kq, strerror(errno));
        return NULL;
    }

    changes = nc_calloc(nevent, sizeof(*changes));
    if (changes == NULL) {
        status = close(kq);
        if (status < 0) {
            log_error("close kq %d failed, ignored: %s", kq, strerror(errno));
        }
        return NULL;
    }

    kevents = nc_calloc(nevent, sizeof(*kevents));
    if (kevents == NULL) {
        nc_free(changes);
        status = close(kq);
        if (status < 0) {
            log_error("close kq %d failed, ignored: %s", kq, strerror(errno));
        }
        return NULL;
    }

    evb = (struct evbase *) nc_alloc(sizeof(*evb));
    if (evb == NULL) {
        nc_free(changes);
        nc_free(kevents);
        status = close(kq);
        if (status < 0) {
            log_error("close kq %d failed, ignored: %s", kq, strerror(errno));
        }
        return NULL;
    }

    evb->kq = kq;
    evb->changes = changes;
    evb->kevents  = kevents;
    evb->nevent = nevent;
    evb->callback_fp = callback_fp;
    evb->n_changes = 0;

    log_debug(LOG_INFO, "kq %d with nevent %d", evb->kq,
              evb->nevent);

    return evb;
}