view src/os/win32/ngx_thread.h @ 4687:7f50a4063100

Mp4: fixed non-keyframe seeks in some cases (ticket #175). Number of entries in stsc atom was wrong if we've added an entry to split a chunk. Additionally, there is no need to add an entry if we are going to split last chunk in an entry, it's enough to update the entry we already have. Previously new entry was added and old one was left as is, resulting in incorrect entry with zero chunks which might confuse some software.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 18 Jun 2012 14:01:18 +0000
parents d620f497c50f
children 94ce52db3367
line wrap: on
line source


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


#ifndef _NGX_THREAD_H_INCLUDED_
#define _NGX_THREAD_H_INCLUDED_


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


typedef HANDLE  ngx_tid_t;
typedef DWORD   ngx_tls_key_t;
typedef DWORD   ngx_thread_value_t;


typedef struct {
    HANDLE      mutex;
    ngx_log_t   *log;
} ngx_mutex_t;


ngx_err_t ngx_create_thread(ngx_tid_t *tid,
    ngx_thread_value_t (__stdcall *func)(void *arg), void *arg, ngx_log_t *log);
ngx_int_t ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle);

ngx_err_t ngx_thread_key_create(ngx_tls_key_t *key);
#define ngx_thread_key_create_n     "TlsAlloc()"
ngx_err_t ngx_thread_set_tls(ngx_tls_key_t *key, void *data);
#define ngx_thread_set_tls_n         "TlsSetValue()"
#define ngx_thread_get_tls           TlsGetValue


#define ngx_thread_volatile  volatile

#define ngx_log_tid                 GetCurrentThreadId()
#define NGX_TID_T_FMT               "%ud"


ngx_mutex_t *ngx_mutex_init(ngx_log_t *log, ngx_uint_t flags);

void ngx_mutex_lock(ngx_mutex_t *m);
ngx_int_t ngx_mutex_trylock(ngx_mutex_t *m);
void ngx_mutex_unlock(ngx_mutex_t *m);


/* STUB */
#define NGX_MUTEX_LIGHT             0
/**/


extern ngx_int_t  ngx_threads_n;


#endif /* _NGX_THREAD_H_INCLUDED_ */