aiops_win32.cc File Reference
#include "squid.h"
#include "DiskIO/DiskThreads/CommIO.h"
#include "DiskThreads.h"
#include "fd.h"
#include "mem/Pool.h"
#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include <cerrno>
#include <csignal>
#include <sys/stat.h>
#include <fcntl.h>
#include <dirent.h>
Include dependency graph for aiops_win32.cc:

Go to the source code of this file.

Classes

struct  squidaio_request_t
 
struct  squidaio_request_queue_t
 
struct  squidaio_thread_t
 

Macros

#define RIDICULOUS_LENGTH   4096
 
#define AIO_LARGE_BUFS   16384
 
#define AIO_MEDIUM_BUFS   AIO_LARGE_BUFS >> 1
 
#define AIO_SMALL_BUFS   AIO_LARGE_BUFS >> 2
 
#define AIO_TINY_BUFS   AIO_LARGE_BUFS >> 3
 
#define AIO_MICRO_BUFS   128
 

Typedefs

typedef enum
_squidaio_thread_status 
squidaio_thread_status
 
typedef struct squidaio_request_t squidaio_request_t
 
typedef struct
squidaio_request_queue_t 
squidaio_request_queue_t
 
typedef struct squidaio_thread_t squidaio_thread_t
 

Enumerations

enum  _squidaio_thread_status {
  _THREAD_STARTING = 0,
  _THREAD_WAITING,
  _THREAD_BUSY,
  _THREAD_FAILED,
  _THREAD_DONE,
  _THREAD_STARTING = 0,
  _THREAD_WAITING,
  _THREAD_BUSY,
  _THREAD_FAILED,
  _THREAD_DONE
}
 

Functions

static void squidaio_queue_request (squidaio_request_t *)
 
static void squidaio_cleanup_request (squidaio_request_t *)
 
static DWORD WINAPI squidaio_thread_loop (LPVOID lpParam)
 
static void squidaio_do_open (squidaio_request_t *)
 
static void squidaio_do_read (squidaio_request_t *)
 
static void squidaio_do_write (squidaio_request_t *)
 
static void squidaio_do_close (squidaio_request_t *)
 
static void squidaio_do_stat (squidaio_request_t *)
 
static void squidaio_do_unlink (squidaio_request_t *)
 
static void squidaio_debug (squidaio_request_t *)
 
static void squidaio_poll_queues (void)
 
static MemAllocatorsquidaio_get_pool (int size)
 
void * squidaio_xmalloc (int size)
 
static char * squidaio_xstrdup (const char *str)
 
void squidaio_xfree (void *p, int size)
 
static void squidaio_xstrfree (char *str)
 
void squidaio_init (void)
 
void squidaio_shutdown (void)
 
int squidaio_cancel (squidaio_result_t *resultp)
 
int squidaio_open (const char *path, int oflag, mode_t mode, squidaio_result_t *resultp)
 
int squidaio_read (int fd, char *bufp, size_t bufs, off_t offset, int whence, squidaio_result_t *resultp)
 
int squidaio_write (int fd, char *bufp, size_t bufs, off_t offset, int whence, squidaio_result_t *resultp)
 
int squidaio_close (int fd, squidaio_result_t *resultp)
 
int squidaio_stat (const char *path, struct stat *sb, squidaio_result_t *resultp)
 
int squidaio_unlink (const char *path, squidaio_result_t *resultp)
 
squidaio_result_tsquidaio_poll_done (void)
 
int squidaio_operations_pending (void)
 
int squidaio_sync (void)
 
int squidaio_get_queue_len (void)
 
void squidaio_stats (StoreEntry *sentry)
 

Variables

static squidaio_thread_tthreads = NULL
 
static int squidaio_initialised = 0
 
static MemAllocatorsquidaio_large_bufs = NULL
 
static MemAllocatorsquidaio_medium_bufs = NULL
 
static MemAllocatorsquidaio_small_bufs = NULL
 
static MemAllocatorsquidaio_tiny_bufs = NULL
 
static MemAllocatorsquidaio_micro_bufs = NULL
 
static int request_queue_len = 0
 
static MemAllocatorsquidaio_request_pool = NULL
 
static MemAllocatorsquidaio_thread_pool = NULL
 
static squidaio_request_queue_t request_queue
 
struct {
   squidaio_request_t *   head
 
   squidaio_request_t **   tailp
 
request_queue2
 
static squidaio_request_queue_t done_queue
 
struct {
   squidaio_request_t *   head
 
   squidaio_request_t **   tailp
 
done_requests
 
static HANDLE main_thread
 

Macro Definition Documentation

#define AIO_LARGE_BUFS   16384

Definition at line 100 of file aiops_win32.cc.

Referenced by squidaio_get_pool(), and squidaio_init().

#define AIO_MEDIUM_BUFS   AIO_LARGE_BUFS >> 1

Definition at line 101 of file aiops_win32.cc.

Referenced by squidaio_get_pool(), and squidaio_init().

#define AIO_MICRO_BUFS   128

Definition at line 104 of file aiops_win32.cc.

Referenced by squidaio_get_pool(), and squidaio_init().

#define AIO_SMALL_BUFS   AIO_LARGE_BUFS >> 2

Definition at line 102 of file aiops_win32.cc.

Referenced by squidaio_get_pool(), and squidaio_init().

#define AIO_TINY_BUFS   AIO_LARGE_BUFS >> 3

Definition at line 103 of file aiops_win32.cc.

Referenced by squidaio_get_pool(), and squidaio_init().

#define RIDICULOUS_LENGTH   4096

Definition at line 26 of file aiops_win32.cc.

Referenced by squidaio_queue_request().

Typedef Documentation

Definition at line 35 of file aiops_win32.cc.

Definition at line 69 of file aiops_win32.cc.

Enumeration Type Documentation

Enumerator
_THREAD_STARTING 
_THREAD_WAITING 
_THREAD_BUSY 
_THREAD_FAILED 
_THREAD_DONE 
_THREAD_STARTING 
_THREAD_WAITING 
_THREAD_BUSY 
_THREAD_FAILED 
_THREAD_DONE 

Definition at line 28 of file aiops_win32.cc.

Function Documentation

static void squidaio_do_close ( squidaio_request_t requestp)
static
static void squidaio_do_open ( squidaio_request_t requestp)
static
static void squidaio_do_stat ( squidaio_request_t requestp)
static
static void squidaio_do_unlink ( squidaio_request_t requestp)
static
static void squidaio_do_write ( squidaio_request_t requestp)
static
int squidaio_get_queue_len ( void  )

Definition at line 1069 of file aiops_win32.cc.

References request_queue_len.

int squidaio_operations_pending ( void  )

Definition at line 1051 of file aiops_win32.cc.

References done_requests, and request_queue_len.

Referenced by squidaio_sync().

int squidaio_sync ( void  )
void squidaio_xfree ( void *  p,
int  size 
)

Definition at line 184 of file aiops_win32.cc.

References MemAllocator::freeOne(), NULL, squidaio_get_pool(), and xfree.

Referenced by squidaio_cleanup_request().

void* squidaio_xmalloc ( int  size)

Definition at line 158 of file aiops_win32.cc.

References MemAllocator::alloc(), NULL, p, squidaio_get_pool(), and xmalloc.

Referenced by squidaio_stat(), and squidaio_xstrdup().

static char* squidaio_xstrdup ( const char *  str)
static

Definition at line 172 of file aiops_win32.cc.

References len, p, and squidaio_xmalloc().

Referenced by squidaio_open(), squidaio_stat(), and squidaio_unlink().

static void squidaio_xstrfree ( char *  str)
static

Definition at line 195 of file aiops_win32.cc.

References MemAllocator::freeOne(), len, NULL, squidaio_get_pool(), and xfree.

Referenced by squidaio_cleanup_request().

Variable Documentation

squidaio_request_queue_t done_queue
static

Definition at line 125 of file aiops_win32.cc.

struct { ... } done_requests
Initial value:
= {
}
static struct @49 done_requests
#define NULL
Definition: types.h:166

Referenced by squidaio_operations_pending(), squidaio_poll_done(), and squidaio_poll_queues().

Definition at line 118 of file aiops_win32.cc.

HANDLE main_thread
static

Definition at line 136 of file aiops_win32.cc.

Referenced by squidaio_init(), and squidaio_shutdown().

squidaio_request_queue_t request_queue
static

Definition at line 115 of file aiops_win32.cc.

struct { ... } request_queue2
Initial value:
= {
}
static struct @48 request_queue2
#define NULL
Definition: types.h:166

Referenced by squidaio_poll_queues(), and squidaio_queue_request().

int squidaio_initialised = 0
static

Definition at line 98 of file aiops_win32.cc.

Referenced by squidaio_init(), squidaio_shutdown(), and squidaio_stats().

MemAllocator* squidaio_large_bufs = NULL
static

Definition at line 106 of file aiops_win32.cc.

Referenced by squidaio_get_pool().

MemAllocator* squidaio_medium_bufs = NULL
static

Definition at line 107 of file aiops_win32.cc.

Referenced by squidaio_get_pool().

MemAllocator* squidaio_micro_bufs = NULL
static

Definition at line 110 of file aiops_win32.cc.

Referenced by squidaio_get_pool().

MemAllocator* squidaio_request_pool = NULL
static

Definition at line 113 of file aiops_win32.cc.

MemAllocator* squidaio_small_bufs = NULL
static

Definition at line 108 of file aiops_win32.cc.

Referenced by squidaio_get_pool().

MemAllocator* squidaio_thread_pool = NULL
static

Definition at line 114 of file aiops_win32.cc.

MemAllocator* squidaio_tiny_bufs = NULL
static

Definition at line 109 of file aiops_win32.cc.

Referenced by squidaio_get_pool().

Definition at line 118 of file aiops_win32.cc.

squidaio_thread_t* threads = NULL
static

Definition at line 97 of file aiops_win32.cc.

Referenced by squidaio_init(), squidaio_shutdown(), and squidaio_stats().

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors