亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? aiops.c

?? 代理服務(wù)器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 2 頁
字號:
    request->ret = -1;    request->err = 0;    /* Internal housekeeping */    request_queue_len += 1;    request->resultp->_data = request;    /* Play some tricks with the request_queue2 queue */    request->next = NULL;    if (!request_queue2.head) {	if (pthread_mutex_trylock(&request_queue.mutex) == 0) {	    /* Normal path */	    *request_queue.tailp = request;	    request_queue.tailp = &request->next;	    pthread_cond_signal(&request_queue.cond);	    pthread_mutex_unlock(&request_queue.mutex);	} else {	    /* Oops, the request queue is blocked, use request_queue2 */	    *request_queue2.tailp = request;	    request_queue2.tailp = &request->next;	}    } else {	/* Secondary path. We have blocked requests to deal with */	/* add the request to the chain */	*request_queue2.tailp = request;	if (pthread_mutex_trylock(&request_queue.mutex) == 0) {	    /* Ok, the queue is no longer blocked */	    *request_queue.tailp = request_queue2.head;	    request_queue.tailp = &request->next;	    pthread_cond_signal(&request_queue.cond);	    pthread_mutex_unlock(&request_queue.mutex);	    request_queue2.head = NULL;	    request_queue2.tailp = &request_queue2.head;	} else {	    /* still blocked, bump the blocked request chain */	    request_queue2.tailp = &request->next;	}    }    if (request_queue2.head) {	static int filter = 0;	static int filter_limit = 8;	if (++filter >= filter_limit) {	    filter_limit += filter;	    filter = 0;	    debug(43, 1) ("squidaio_queue_request: WARNING - Queue congestion\n");	}    }    /* Warn if out of threads */    if (request_queue_len > MAGIC1) {	static int last_warn = 0;	static int queue_high, queue_low;	if (high_start == 0) {	    high_start = squid_curtime;	    queue_high = request_queue_len;	    queue_low = request_queue_len;	}	if (request_queue_len > queue_high)	    queue_high = request_queue_len;	if (request_queue_len < queue_low)	    queue_low = request_queue_len;	if (squid_curtime >= (last_warn + 15) &&	    squid_curtime >= (high_start + 5)) {	    debug(43, 1) ("squidaio_queue_request: WARNING - Disk I/O overloading\n");	    if (squid_curtime >= (high_start + 15))		debug(43, 1) ("squidaio_queue_request: Queue Length: current=%d, high=%d, low=%d, duration=%ld\n",		    request_queue_len, queue_high, queue_low, (long int) (squid_curtime - high_start));	    last_warn = squid_curtime;	}    } else {	high_start = 0;    }    /* Warn if seriously overloaded */    if (request_queue_len > RIDICULOUS_LENGTH) {	debug(43, 0) ("squidaio_queue_request: Async request queue growing uncontrollably!\n");	debug(43, 0) ("squidaio_queue_request: Syncing pending I/O operations.. (blocking)\n");	squidaio_sync();	debug(43, 0) ("squidaio_queue_request: Synced\n");    }}				/* squidaio_queue_request */static voidsquidaio_cleanup_request(squidaio_request_t * requestp){    squidaio_result_t *resultp = requestp->resultp;    int cancelled = requestp->cancelled;    /* Free allocated structures and copy data back to user space if the */    /* request hasn't been cancelled */    switch (requestp->request_type) {    case _AIO_OP_STAT:	if (!cancelled && requestp->ret == 0)	    xmemcpy(requestp->statp, requestp->tmpstatp, sizeof(struct stat));	squidaio_xfree(requestp->tmpstatp, sizeof(struct stat));	squidaio_xstrfree(requestp->path);	break;    case _AIO_OP_OPEN:	if (cancelled && requestp->ret >= 0)	    /* The open() was cancelled but completed */	    close(requestp->ret);	squidaio_xstrfree(requestp->path);	break;    case _AIO_OP_CLOSE:	if (cancelled && requestp->ret < 0)	    /* The close() was cancelled and never got executed */	    close(requestp->fd);	break;    case _AIO_OP_UNLINK:    case _AIO_OP_TRUNCATE:    case _AIO_OP_OPENDIR:	squidaio_xstrfree(requestp->path);	break;    case _AIO_OP_READ:	break;    case _AIO_OP_WRITE:	break;    default:	break;    }    if (resultp != NULL && !cancelled) {	resultp->aio_return = requestp->ret;	resultp->aio_errno = requestp->err;    }    memPoolFree(squidaio_request_pool, requestp);}				/* squidaio_cleanup_request */intsquidaio_cancel(squidaio_result_t * resultp){    squidaio_request_t *request = resultp->_data;    if (request && request->resultp == resultp) {	debug(43, 9) ("squidaio_cancel: %p type=%d result=%p\n",	    request, request->request_type, request->resultp);	request->cancelled = 1;	request->resultp = NULL;	resultp->_data = NULL;	return 0;    }    return 1;}				/* squidaio_cancel */intsquidaio_open(const char *path, int oflag, mode_t mode, squidaio_result_t * resultp){    squidaio_request_t *requestp;    requestp = memPoolAlloc(squidaio_request_pool);    requestp->path = (char *) squidaio_xstrdup(path);    requestp->oflag = oflag;    requestp->mode = mode;    requestp->resultp = resultp;    requestp->request_type = _AIO_OP_OPEN;    requestp->cancelled = 0;    squidaio_queue_request(requestp);    return 0;}static voidsquidaio_do_open(squidaio_request_t * requestp){    requestp->ret = open(requestp->path, requestp->oflag, requestp->mode);    requestp->err = errno;#ifdef FD_CLOEXEC    if (requestp->ret >= 0) {	int fd = requestp->ret;	int flags;	int dummy = 0;	if ((flags = fcntl(fd, F_GETFL, dummy)) < 0) {	    debug(50, 0) ("FD %d: fcntl F_GETFL: %s\n", fd, xstrerror());	    return;	}	if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0)	    debug(50, 0) ("FD %d: set close-on-exec failed: %s\n", fd, xstrerror());	fd_table[fd].flags.close_on_exec = 1;    }#endif}intsquidaio_read(int fd, char *bufp, int bufs, off_t offset, int whence, squidaio_result_t * resultp){    squidaio_request_t *requestp;    requestp = memPoolAlloc(squidaio_request_pool);    requestp->fd = fd;    requestp->bufferp = bufp;    requestp->buflen = bufs;    requestp->offset = offset;    requestp->whence = whence;    requestp->resultp = resultp;    requestp->request_type = _AIO_OP_READ;    requestp->cancelled = 0;    squidaio_queue_request(requestp);    return 0;}static voidsquidaio_do_read(squidaio_request_t * requestp){    requestp->ret = pread(requestp->fd, requestp->bufferp, requestp->buflen, requestp->offset);    requestp->err = errno;}intsquidaio_write(int fd, char *bufp, int bufs, off_t offset, int whence, squidaio_result_t * resultp){    squidaio_request_t *requestp;    requestp = memPoolAlloc(squidaio_request_pool);    requestp->fd = fd;    requestp->bufferp = bufp;    requestp->buflen = bufs;    requestp->offset = offset;    requestp->whence = whence;    requestp->resultp = resultp;    requestp->request_type = _AIO_OP_WRITE;    requestp->cancelled = 0;    squidaio_queue_request(requestp);    return 0;}static voidsquidaio_do_write(squidaio_request_t * requestp){    assert(requestp->offset >= 0);    requestp->ret = pwrite(requestp->fd, requestp->bufferp, requestp->buflen, requestp->offset);    requestp->err = errno;}intsquidaio_close(int fd, squidaio_result_t * resultp){    squidaio_request_t *requestp;    requestp = memPoolAlloc(squidaio_request_pool);    requestp->fd = fd;    requestp->resultp = resultp;    requestp->request_type = _AIO_OP_CLOSE;    requestp->cancelled = 0;    squidaio_queue_request(requestp);    return 0;}static voidsquidaio_do_close(squidaio_request_t * requestp){    requestp->ret = close(requestp->fd);    requestp->err = errno;}intsquidaio_stat(const char *path, struct stat *sb, squidaio_result_t * resultp){    squidaio_request_t *requestp;    requestp = memPoolAlloc(squidaio_request_pool);    requestp->path = (char *) squidaio_xstrdup(path);    requestp->statp = sb;    requestp->tmpstatp = (struct stat *) squidaio_xmalloc(sizeof(struct stat));    requestp->resultp = resultp;    requestp->request_type = _AIO_OP_STAT;    requestp->cancelled = 0;    squidaio_queue_request(requestp);    return 0;}static voidsquidaio_do_stat(squidaio_request_t * requestp){    requestp->ret = stat(requestp->path, requestp->tmpstatp);    requestp->err = errno;}intsquidaio_unlink(const char *path, squidaio_result_t * resultp){    squidaio_request_t *requestp;    requestp = memPoolAlloc(squidaio_request_pool);    requestp->path = squidaio_xstrdup(path);    requestp->resultp = resultp;    requestp->request_type = _AIO_OP_UNLINK;    requestp->cancelled = 0;    squidaio_queue_request(requestp);    return 0;}static voidsquidaio_do_unlink(squidaio_request_t * requestp){    requestp->ret = unlink(requestp->path);    requestp->err = errno;}#if USE_TRUNCATEintsquidaio_truncate(const char *path, off_t length, squidaio_result_t * resultp){    squidaio_request_t *requestp;    requestp = memPoolAlloc(squidaio_request_pool);    requestp->path = (char *) squidaio_xstrdup(path);    requestp->offset = length;    requestp->resultp = resultp;    requestp->request_type = _AIO_OP_TRUNCATE;    requestp->cancelled = 0;    squidaio_queue_request(requestp);    return 0;}static voidsquidaio_do_truncate(squidaio_request_t * requestp){    requestp->ret = truncate(requestp->path, requestp->offset);    requestp->err = errno;}#endif#if AIO_OPENDIR/* XXX squidaio_opendir NOT implemented yet.. */intsquidaio_opendir(const char *path, squidaio_result_t * resultp){    squidaio_request_t *requestp;    int len;    requestp = memPoolAlloc(squidaio_request_pool);    return -1;}static voidsquidaio_do_opendir(squidaio_request_t * requestp){    /* NOT IMPLEMENTED */}#endifstatic voidsquidaio_poll_queues(void){    /* kick "overflow" request queue */    if (request_queue2.head &&	pthread_mutex_trylock(&request_queue.mutex) == 0) {	*request_queue.tailp = request_queue2.head;	request_queue.tailp = request_queue2.tailp;	pthread_cond_signal(&request_queue.cond);	pthread_mutex_unlock(&request_queue.mutex);	request_queue2.head = NULL;	request_queue2.tailp = &request_queue2.head;    }    /* poll done queue */    if (done_queue.head && pthread_mutex_trylock(&done_queue.mutex) == 0) {	struct squidaio_request_t *requests = done_queue.head;	done_queue.head = NULL;	done_queue.tailp = &done_queue.head;	pthread_mutex_unlock(&done_queue.mutex);	*done_requests.tailp = requests;	request_queue_len -= 1;	while (requests->next) {	    requests = requests->next;	    request_queue_len -= 1;	}	done_requests.tailp = &requests->next;    }}squidaio_result_t *squidaio_poll_done(void){    squidaio_request_t *request;    squidaio_result_t *resultp;    int cancelled;    int polled = 0;  AIO_REPOLL:    request = done_requests.head;    if (request == NULL && !polled) {	if (done_signalled) {	    char junk[256];	    FD_READ_METHOD(done_fd_read, junk, sizeof(junk));	    done_signalled = 0;	}	squidaio_poll_queues();	polled = 1;	request = done_requests.head;    }    if (!request) {	return NULL;    }    debug(43, 9) ("squidaio_poll_done: %p type=%d result=%p\n",	request, request->request_type, request->resultp);    done_requests.head = request->next;    if (!done_requests.head)	done_requests.tailp = &done_requests.head;    resultp = request->resultp;    cancelled = request->cancelled;    squidaio_debug(request);    debug(43, 5) ("DONE: %d -> %d\n", request->ret, request->err);    squidaio_cleanup_request(request);    if (cancelled)	goto AIO_REPOLL;    return resultp;}				/* squidaio_poll_done */intsquidaio_operations_pending(void){    return request_queue_len + (done_requests.head ? 1 : 0);}intsquidaio_sync(void){    /* XXX This might take a while if the queue is large.. */    do {	squidaio_poll_queues();    } while (request_queue_len > 0);    return squidaio_operations_pending();}intsquidaio_get_queue_len(void){    return request_queue_len;}static voidsquidaio_debug(squidaio_request_t * request){    switch (request->request_type) {    case _AIO_OP_OPEN:	debug(43, 5) ("OPEN of %s to FD %d\n", request->path, request->ret);	break;    case _AIO_OP_READ:	debug(43, 5) ("READ on fd: %d\n", request->fd);	break;    case _AIO_OP_WRITE:	debug(43, 5) ("WRITE on fd: %d\n", request->fd);	break;    case _AIO_OP_CLOSE:	debug(43, 5) ("CLOSE of fd: %d\n", request->fd);	break;    case _AIO_OP_UNLINK:	debug(43, 5) ("UNLINK of %s\n", request->path);	break;    case _AIO_OP_TRUNCATE:	debug(43, 5) ("UNLINK of %s\n", request->path);	break;    default:	break;    }}voidsquidaio_stats(StoreEntry * sentry){    squidaio_thread_t *threadp;    int i;    if (!squidaio_initialised)	return;    storeAppendPrintf(sentry, "\n\nThreads Status:\n");    storeAppendPrintf(sentry, "#\tID\t# Requests\n");    threadp = threads;    for (i = 0; i < squidaio_nthreads; i++) {	storeAppendPrintf(sentry, "%i\t0x%lx\t%ld\n", i + 1, (unsigned long) threadp->thread, threadp->requests);	threadp = threadp->next;    }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷拍国产亚洲| 色婷婷激情综合| 午夜久久久影院| 青青草原综合久久大伊人精品 | 欧美天天综合网| 日韩视频不卡中文| 国产日韩高清在线| 亚洲国产成人一区二区三区| 亚洲黄色免费网站| 国产91对白在线观看九色| 欧美综合亚洲图片综合区| 欧美va亚洲va在线观看蝴蝶网| 综合自拍亚洲综合图不卡区| 一区二区三区中文免费| 久久久精品国产免费观看同学| 国产精品电影院| 理论电影国产精品| 成人午夜在线视频| 成人免费不卡视频| 日韩一区二区三区免费看| 亚洲精品亚洲人成人网| 国产成人精品免费| 精品美女一区二区| 午夜精品免费在线观看| 九九精品一区二区| 欧美日韩精品福利| 亚洲欧洲精品天堂一级| 国产精品一品二品| 日韩一区二区免费在线电影| 亚洲国产视频网站| 91天堂素人约啪| 国产精品久久久久影视| 国产一区二区三区黄视频| 欧美精品亚洲二区| 一区二区三区在线观看动漫| 国产精品538一区二区在线| 91网站在线观看视频| 中文字幕第一区| 国产高清不卡一区| 国产无一区二区| 国产一区二区精品久久99| 欧美xxxx老人做受| 成人黄色软件下载| 亚洲成a人v欧美综合天堂下载 | 国产精品久久777777| 国产女主播在线一区二区| 国产欧美精品一区二区三区四区| 国产精品久久久久久久浪潮网站| 国产视频一区二区在线观看| 日本视频一区二区| 亚洲午夜久久久久久久久电影院| 国产精品一卡二| 久久精品视频一区二区三区| 亚洲大片一区二区三区| 亚洲成a人片在线观看中文| 色哟哟在线观看一区二区三区| 国产精品亲子乱子伦xxxx裸| 成人av小说网| 夜夜爽夜夜爽精品视频| 欧美日韩激情在线| 日韩成人一区二区三区在线观看| 欧美精品一二三区| 久久国产尿小便嘘嘘| 国产色综合一区| 99综合电影在线视频| 亚洲女女做受ⅹxx高潮| 欧美人妖巨大在线| 国产在线看一区| 欧美一区二区三区人| 美女视频黄久久| 亚洲国产高清在线| 欧美亚洲高清一区| 久久精品国产久精国产| 国产精品无码永久免费888| 一本到不卡免费一区二区| 亚洲动漫第一页| 欧美精品一区二区高清在线观看| 国产精一品亚洲二区在线视频| 中文子幕无线码一区tr| 欧美日韩精品一区二区三区四区 | aaa亚洲精品| 亚洲成人精品影院| 日韩精品一区二区三区中文不卡 | 欧美一区二区三区免费视频| 国产一区高清在线| 一区二区成人在线| 2023国产精华国产精品| 一本大道av伊人久久综合| 麻豆精品视频在线| 久久免费美女视频| eeuss影院一区二区三区 | 五月婷婷另类国产| 久久久久久久性| 色婷婷综合久久久中文字幕| 久久精品国产免费| 亚洲永久精品国产| 欧美国产精品v| 日韩无一区二区| 色综合久久九月婷婷色综合| 国产一区二区美女| 亚洲亚洲人成综合网络| 精品少妇一区二区三区 | 日本成人在线看| 亚洲欧美经典视频| 久久众筹精品私拍模特| 欧美午夜一区二区三区免费大片| 成人一道本在线| 韩国一区二区在线观看| 亚洲欧洲三级电影| 日韩美女在线视频| 日韩欧美在线1卡| www.亚洲精品| 日本最新不卡在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美精品一区二区三区视频| 成人动漫av在线| 狠狠色伊人亚洲综合成人| 日日夜夜精品免费视频| 亚洲另类在线制服丝袜| 中文字幕一区二区三区四区不卡 | 成人免费视频国产在线观看| 激情国产一区二区| 日韩制服丝袜先锋影音| 亚洲国产日韩一区二区| 亚洲精选一二三| 中文字幕亚洲不卡| 国产精品素人视频| 久久久国产综合精品女国产盗摄| 欧美性大战久久| 亚洲欧美日韩一区二区 | 成人h精品动漫一区二区三区| 国产精品自产自拍| 成人免费av在线| 欧美色爱综合网| 精品国产乱码久久久久久夜甘婷婷 | 久久久久久亚洲综合| 久久午夜国产精品| 亚洲欧洲成人av每日更新| 亚洲永久精品国产| 韩国av一区二区三区| 波多野结衣中文字幕一区二区三区| 色狠狠综合天天综合综合| 91精品欧美一区二区三区综合在| 久久久精品免费免费| 一区二区三区资源| 精品无人码麻豆乱码1区2区 | 欧洲精品一区二区| 精品视频1区2区3区| 欧美zozozo| 亚洲色图在线视频| 免费看日韩a级影片| 成人动漫一区二区三区| 91精品国产乱码| 中文字幕日韩av资源站| 奇米精品一区二区三区四区| 成人免费毛片aaaaa**| 欧美日韩高清一区二区不卡| 国产午夜精品一区二区三区四区 | 亚洲欧美色一区| 日日噜噜夜夜狠狠视频欧美人| 国产高清不卡一区二区| 欧洲中文字幕精品| 久久精品夜色噜噜亚洲a∨| 亚洲国产综合色| 成人激情免费网站| 欧美一区二区三区的| 中文字幕+乱码+中文字幕一区| 夜夜亚洲天天久久| 91在线观看免费视频| 精品福利视频一区二区三区| 久久综合九色综合97婷婷女人| 成人免费在线视频观看| 麻豆中文一区二区| 精品视频一区二区不卡| 欧美性色欧美a在线播放| 精品免费一区二区三区| 中文字幕一区日韩精品欧美| 精品一区二区三区久久久| 欧美日韩综合不卡| 国产精品女上位| 国产一区二区电影| 欧美成人r级一区二区三区| 亚洲国产视频a| 色婷婷久久综合| 中文字幕一区二区三区四区不卡| 国产精品一区二区不卡| 欧美成人bangbros| 久久精品国产第一区二区三区| 欧美日韩一区二区三区高清| 亚洲一区二区在线免费看| 91在线视频网址| 国产精品美女久久久久久久久| 国产激情视频一区二区在线观看| 粉嫩欧美一区二区三区高清影视 | 国产精品久久久久久一区二区三区 | 91原创在线视频| 国产精品免费视频观看| 国产suv一区二区三区88区| 国产欧美久久久精品影院| 国产精品77777|