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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wthread.c

?? Ubuntu公司提供免費的iSCSI Target
?? C
字號:
/* * Worker thread. * (C) 2004 - 2005 FUJITA Tomonori <tomof@acm.org> * This code is licenced under the GPL. */#include <linux/kthread.h>#include "iscsi.h"#include "iscsi_dbg.h"void wthread_queue(struct iscsi_cmnd *cmnd){	struct worker_thread_info *info = &cmnd->conn->session->target->wthread_info;	if (!list_empty(&cmnd->list)) {		struct iscsi_scsi_cmd_hdr *req = cmnd_hdr(cmnd);		eprintk("%x %p %x %x %x %x %lx %x\n",			cmnd_itt(cmnd), req, req->opcode, req->scb[0], cmnd->pdu.datasize,			be32_to_cpu(req->data_length), cmnd->flags, req->flags);		if (cmnd->lun)			eprintk("%u\n", cmnd->lun->lun);		assert(list_empty(&cmnd->list));	}	spin_lock(&info->wthread_lock);	list_add_tail(&cmnd->list, &info->work_queue);	spin_unlock(&info->wthread_lock);	atomic_inc(&cmnd->conn->nr_busy_cmnds);	wake_up(&info->wthread_sleep);}static struct iscsi_cmnd * get_ready_cmnd(struct worker_thread_info *info){	struct iscsi_cmnd *cmnd = NULL;	spin_lock(&info->wthread_lock);	if (!list_empty(&info->work_queue)) {		cmnd = list_entry(info->work_queue.next, struct iscsi_cmnd, list);		list_del_init(&cmnd->list);		assert(cmnd->conn);	}	spin_unlock(&info->wthread_lock);	return cmnd;}static int cmnd_execute(struct iscsi_cmnd *cmnd){	int type = cmnd->conn->session->target->trgt_param.target_type;	assert(target_type_array[type]->execute_cmnd);	return target_type_array[type]->execute_cmnd(cmnd);}static int worker_thread(void *arg){	struct worker_thread *wt = (struct worker_thread *) arg;	struct worker_thread_info *info = wt->w_info;	struct iscsi_cmnd *cmnd;	struct iscsi_conn *conn;	DECLARE_WAITQUEUE(wait, current);	add_wait_queue(&info->wthread_sleep, &wait);	__set_current_state(TASK_RUNNING);	do {		while (!list_empty(&info->work_queue) &&		       (cmnd = get_ready_cmnd(info))) {			conn = cmnd->conn;			cmnd_execute(cmnd);			assert(conn);			atomic_dec(&conn->nr_busy_cmnds);		}		__set_current_state(TASK_INTERRUPTIBLE);		if (list_empty(&info->work_queue))			schedule();		__set_current_state(TASK_RUNNING);	} while (!kthread_should_stop());	remove_wait_queue(&info->wthread_sleep, &wait);	return 0;}static int start_one_worker_thread(struct iscsi_target *target){	struct worker_thread_info *info = &target->wthread_info;	struct worker_thread *wt;	struct task_struct *task;	if (!(wt = kmalloc(sizeof(struct worker_thread), GFP_KERNEL)))		return -ENOMEM;	wt->w_info = info;	task = kthread_create(worker_thread, wt, "istiod%d", target->tid);	if (IS_ERR(task)) {		kfree(wt);		return PTR_ERR(task);	}	wt->w_task = task;	list_add(&wt->w_list, &info->wthread_list);	info->nr_running_wthreads++;	wake_up_process(task);	return 0;}static int stop_one_worker_thread(struct worker_thread *wt){	struct worker_thread_info *info = wt->w_info;	int err;	assert(wt->w_task);	if ((err = kthread_stop(wt->w_task)) < 0)		return err;	list_del(&wt->w_list);	kfree(wt);	info->nr_running_wthreads--;	return 0;}int wthread_init(struct iscsi_target *target){	struct worker_thread_info *info = &target->wthread_info;	spin_lock_init(&info->wthread_lock);	info->nr_running_wthreads = 0;	INIT_LIST_HEAD(&info->work_queue);	INIT_LIST_HEAD(&info->wthread_list);	init_waitqueue_head(&info->wthread_sleep);	return 0;}int wthread_start(struct iscsi_target *target){	int err = 0;	struct worker_thread_info *info = &target->wthread_info;	while (info->nr_running_wthreads < target->trgt_param.wthreads) {		if ((err = start_one_worker_thread(target)) < 0) {			eprintk("Fail to create a worker thread %d\n", err);			goto out;		}	}	while (info->nr_running_wthreads > target->trgt_param.wthreads) {		struct worker_thread *wt;		wt = list_entry(info->wthread_list.next, struct worker_thread, w_list);		if ((err = stop_one_worker_thread(wt)) < 0) {			eprintk("Fail to stop a worker thread %d\n", err);			break;		}	}out:	return err;}int wthread_stop(struct iscsi_target *target){	struct worker_thread *wt, *tmp;	int err = 0;	struct worker_thread_info *info = &target->wthread_info;	list_for_each_entry_safe(wt, tmp, &info->wthread_list, w_list) {		if ((err = stop_one_worker_thread(wt)) < 0) {			eprintk("Fail to stop a worker thread %d\n", err);			return err;		}	}	return err;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区91精品张津瑜| 久久久久久久久97黄色工厂| 成人深夜在线观看| 国产精品综合一区二区| 久久国产精品区| 美女视频网站黄色亚洲| 麻豆freexxxx性91精品| 久久国产成人午夜av影院| 久久国产成人午夜av影院| 韩国一区二区在线观看| 国产福利一区二区三区视频在线 | 日韩高清在线不卡| 亚洲香肠在线观看| 午夜精品一区二区三区免费视频 | 国产一区欧美一区| 国产精品99久久久久久有的能看| 国产精品一二二区| 国产69精品久久99不卡| 色综合av在线| 91精品久久久久久久99蜜桃| 久久精品亚洲麻豆av一区二区 | 久久这里只有精品首页| 欧美激情艳妇裸体舞| 亚洲激情男女视频| 偷拍一区二区三区四区| 国内精品免费**视频| 北条麻妃国产九九精品视频| 欧美日免费三级在线| 69精品人人人人| 欧美激情在线观看视频免费| 综合久久国产九一剧情麻豆| 亚洲欧美另类综合偷拍| 美女视频黄久久| caoporen国产精品视频| 欧美三区在线视频| 久久久久国产精品麻豆| 亚洲一区二区欧美日韩| 国产成人日日夜夜| 欧美久久久久免费| 久久久九九九九| 调教+趴+乳夹+国产+精品| 丁香啪啪综合成人亚洲小说| 制服丝袜国产精品| 亚洲激情图片一区| 高清av一区二区| 欧美一个色资源| 亚洲精品日日夜夜| 国产美女在线精品| 91精品国产综合久久精品麻豆| 国产精品久久久久一区二区三区共 | 精品无人码麻豆乱码1区2区| 色综合久久久久综合| 久久久国产一区二区三区四区小说| 亚洲久草在线视频| 国产丶欧美丶日本不卡视频| 7777精品伊人久久久大香线蕉最新版| 中文字幕一区二区三区不卡 | 欧美专区日韩专区| 一区在线观看视频| 国产一区二区电影| 日韩天堂在线观看| 视频一区二区中文字幕| 欧美在线观看一区| 中文字幕五月欧美| 粗大黑人巨茎大战欧美成人| 精品理论电影在线观看| 午夜激情久久久| 欧美日本一区二区| 视频一区国产视频| 884aa四虎影成人精品一区| 午夜精品久久久久久久久久久| 91国产免费看| 一区二区三区小说| 色欧美乱欧美15图片| 亚洲色图第一区| 91视频在线观看免费| 国产精品久久久久久久久图文区 | 在线视频一区二区免费| 最新中文字幕一区二区三区| 成人激情图片网| 亚洲欧洲www| 91久久久免费一区二区| 亚洲国产精品一区二区www| 欧美影院一区二区| 午夜精品久久久久久不卡8050 | 精品夜夜嗨av一区二区三区| 欧美一区二区三区在线电影 | 国产日韩综合av| 国产91精品免费| 亚洲精品国产第一综合99久久| 91久久精品一区二区三区| 香蕉乱码成人久久天堂爱免费| 欧美一区三区二区| 国产美女精品在线| 中文字幕一区在线观看视频| 欧美在线观看视频一区二区三区 | 国产精品女主播av| 一本久久综合亚洲鲁鲁五月天| 亚洲综合免费观看高清完整版在线| 欧美日韩一区二区欧美激情| 亚洲国产综合91精品麻豆| 91精品欧美福利在线观看| 精品一区二区av| 国产精品国产自产拍高清av王其| 色妞www精品视频| 日韩vs国产vs欧美| 亚洲丝袜精品丝袜在线| 欧美三级蜜桃2在线观看| 国产毛片一区二区| 亚洲激情在线激情| 精品成a人在线观看| 色婷婷狠狠综合| 久久99精品国产麻豆婷婷| 亚洲品质自拍视频| 日韩免费电影一区| 在线这里只有精品| 国产精品99精品久久免费| 一区二区三区四区亚洲| 26uuu精品一区二区在线观看| 色婷婷综合久色| 国产成人午夜电影网| 日本美女一区二区三区视频| 成人欧美一区二区三区黑人麻豆 | 五月婷婷久久综合| 一区在线中文字幕| 久久免费视频一区| 日韩一区二区免费在线电影| 色老综合老女人久久久| 成人一区二区视频| 国产精品综合一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲日本成人在线观看| 久久精品一区二区三区不卡牛牛 | 欧美日韩aaaaaa| 91蜜桃婷婷狠狠久久综合9色| 久久99国产精品免费网站| 午夜精品久久久久久久99水蜜桃| 亚洲欧洲成人自拍| 国产精品传媒入口麻豆| 国产欧美精品在线观看| 欧美成人欧美edvon| 91精品国产综合久久福利| 91理论电影在线观看| 成人91在线观看| 成人黄色av网站在线| 国产成人精品影视| 国产麻豆精品一区二区| 麻豆精品在线观看| 久久爱www久久做| 免费观看一级欧美片| 久久精品噜噜噜成人av农村| 男女视频一区二区| 亚洲成在线观看| 亚洲不卡在线观看| 久久久噜噜噜久久人人看 | 波多野结衣亚洲一区| 极品少妇一区二区三区精品视频| 青娱乐精品视频在线| 美女视频黄 久久| 紧缚捆绑精品一区二区| 加勒比av一区二区| 国产成人三级在线观看| 9i在线看片成人免费| 91片在线免费观看| k8久久久一区二区三区| 91丨九色丨蝌蚪富婆spa| 在线精品视频免费播放| 欧美男女性生活在线直播观看| 欧美美女一区二区| 日韩精品自拍偷拍| 国产视频一区二区三区在线观看| 国产欧美日韩亚州综合| 亚洲精品日日夜夜| 日日摸夜夜添夜夜添精品视频| 3d动漫精品啪啪1区2区免费| 在线播放日韩导航| 欧美一区二区三区性视频| 成人av电影免费观看| 激情偷乱视频一区二区三区| 国产一区二三区| 精品一区二区三区欧美| av一区二区三区四区| 99久久久国产精品| 欧美肥胖老妇做爰| 久久久亚洲午夜电影| 亚洲激情图片一区| 麻豆精品在线看| 91色乱码一区二区三区| 日韩午夜三级在线| 亚洲天堂av一区| 日本在线不卡视频| 波多野结衣一区二区三区| 欧美一区二区三区在| 成人欧美一区二区三区小说| 久久精品国产精品青草| 99热精品国产| 欧美电影精品一区二区| 亚洲手机成人高清视频| 国产一区二区三区免费观看| 精品视频一区二区不卡|