view src/event/ngx_event_busy_lock.h @ 5360:3d2d3e1cf427

Win32: MinGW GCC compatibility. Several warnings silenced, notably (ngx_socket_t) -1 is now checked on socket operations instead of -1, as ngx_socket_t is unsigned on win32 and gcc complains on comparison. With this patch, it's now possible to compile nginx using mingw gcc, with options we normally compile on win32.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 04 Sep 2013 20:48:28 +0400
parents d620f497c50f
children 457ec43dd8d5
line wrap: on
line source


/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGX_EVENT_BUSY_LOCK_H_INCLUDED_
#define _NGX_EVENT_BUSY_LOCK_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_event.h>

typedef struct ngx_event_busy_lock_ctx_s  ngx_event_busy_lock_ctx_t;

struct ngx_event_busy_lock_ctx_s {
    ngx_event_t                *event;
    ngx_event_handler_pt        handler;
    void                       *data;
    ngx_msec_t                  timer;

    unsigned                    locked:1;
    unsigned                    waiting:1;
    unsigned                    cache_updated:1;

    char                       *md5;
    ngx_int_t                   slot;

    ngx_event_busy_lock_ctx_t  *next;
};


typedef struct {
    u_char                     *md5_mask;
    char                       *md5;
    ngx_uint_t                  cacheable;

    ngx_uint_t                  busy;
    ngx_uint_t                  max_busy;

    ngx_uint_t                  waiting;
    ngx_uint_t                  max_waiting;

    ngx_event_busy_lock_ctx_t  *events;
    ngx_event_busy_lock_ctx_t  *last;

#if (NGX_THREADS)
    ngx_mutex_t                *mutex;
#endif
} ngx_event_busy_lock_t;


ngx_int_t ngx_event_busy_lock(ngx_event_busy_lock_t *bl,
    ngx_event_busy_lock_ctx_t *ctx);
ngx_int_t ngx_event_busy_lock_cacheable(ngx_event_busy_lock_t *bl,
    ngx_event_busy_lock_ctx_t *ctx);
void ngx_event_busy_unlock(ngx_event_busy_lock_t *bl,
    ngx_event_busy_lock_ctx_t *ctx);
void ngx_event_busy_lock_cancel(ngx_event_busy_lock_t *bl,
    ngx_event_busy_lock_ctx_t *ctx);


#endif /* _NGX_EVENT_BUSY_LOCK_H_INCLUDED_ */