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

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

?? device.c

?? libaal-1.0.5.tar.gz reiser4progs編譯時需要
?? C
字號:
/* Copyright (C) 2001, 2002, 2003 by Hans Reiser, licensing governed by   libaal/COPYING.      device.c -- device independent interface and block-working functions. */#ifdef HAVE_CONFIG_H#  include <config.h>#endif#include <aal/libaal.h>#include <fcntl.h>/* This macro is used for checking whether specified routine from the device   operations is implemented or not. If not, it throws exception and performs   specified action.      It is using in the following maner:   aal_device_check_routine(some_devive_instance, read_operation, goto   error_processing);       This macro was introdused to decrease source code by removing a lot of common   pieces and replace them by just one line of macro. */#ifndef ENABLE_MINIMAL#define aal_device_check_routine(device, routine, action)		\    do {								\	    if (!device->ops->routine) {				\	        aal_fatal("Device operation \""                         \                           #routine "\" isn't implemented.");           \	        action;							\	    }								\    } while (0)#else#define aal_device_check_routine(device, routine, action)#endif/* Initializes device instance, checks and sets all device attributes   (blocksize, flags, etc) and returns initialized instance to caller. */aal_device_t *aal_device_open(	struct aal_device_ops *ops, /* pointer to device operations */	void *person,               /* device personality (filename, etc) */	uint32_t blksize,           /* block size device is working with */	int flags)		    /* flags device opened with (O_RDONLY, etc) */{	aal_device_t *device;	aal_assert("umka-429", ops != NULL);    #ifndef ENABLE_MINIMAL	/* Rough check for blocksize validness */	if (!aal_pow2(blksize)) {		aal_error("Block size %u isn't power of two.", blksize);		return NULL;	}	    	if (blksize < 512) {		aal_error("Block size can't be less than 512 bytes.");		return NULL;	}#endif		/* Allocating memory for device instance and initializing all fields */	if (!(device = (aal_device_t *)aal_calloc(sizeof(*device), 0)))		return NULL;	device->ops = ops;	device->flags = flags;	device->person = person;	device->blksize = blksize;	if (ops->open) {		if (ops->open(device, person, blksize, flags))			goto error_free_device;	}	return device;	 error_free_device:	aal_free(device);	return NULL;}#ifndef ENABLE_MINIMALerrno_t aal_device_reopen(	aal_device_t *device,       /* device for reopening */	uint32_t blksize,           /* block size device is working with */	int flags)		    /* flags device opened with (READ, WRITE...) */{	device->flags = flags;	device->blksize = blksize;	return device->ops->open(device, device->person,				 blksize, flags);}bool_t aal_device_readonly(aal_device_t *device) {	aal_assert("umka-1291", device != NULL);	return ((device->flags & 7) == O_RDONLY);}/* Performs write operation on specified device. Actualqy it calls corresponding   operation (write) from assosiated with device operations. Returns error code,   see types.h for more detailed description of errno_t. */errno_t aal_device_write(	aal_device_t *device,	/* device instance we will write into */	void *buff,		/* buffer with data to be wrote */	blk_t block,		/* block we will write to */	count_t count)		/* number of blocks to be wrote */{	aal_assert("umka-434", device != NULL);	aal_assert("umka-435", buff != NULL);		aal_device_check_routine(device, write, return -EINVAL);	return device->ops->write(device, buff, block, count);}/* Performs sync operation on specified device. Actualy it calls corresponding   operation (sync) from assosiated with device operations. Returns error code,   see types.h for more detailed description of errno_t. */errno_t aal_device_sync(	aal_device_t *device)	/* device instance that will be synchronized */{	aal_assert("umka-436", device != NULL);    	aal_device_check_routine(device, sync, return -EINVAL);	return device->ops->sync(device);}/* Compares two devices. Returns TRUE for equal devices and FALSE for different   ones. This function is needed in order to be aware is host device user has   specified corresponds journal one. And in some other cases. */bool_t aal_device_equals(	aal_device_t *device1,	/* first device for comparing */	aal_device_t *device2)	/* second one */{	aal_assert("umka-438", device1 != NULL);	aal_assert("umka-439", device2 != NULL);		aal_device_check_routine(device1, equals, return 0);	return device1->ops->equals(device1, device2);}#endif/* Checks and sets new block size for specified device. Returns error code, see   types.h for more detailed description of errno_t. */errno_t aal_device_set_bs(	aal_device_t *device,	/* device to be set with passed blocksize */	uint32_t blksize)       /* new blocksize value */{	aal_assert("umka-431", device != NULL);#ifndef ENABLE_MINIMAL	if (!aal_pow2(blksize)) {		aal_error("Block size %u isn't power of two.", blksize);		return -EINVAL;	}	    	if (blksize < 512) {		aal_error("Block size can't be less than 512 bytes.");		return -EINVAL;	}#endif	device->blksize = blksize;	return 0;}/* Closes device. Frees all assosiated memory */void aal_device_close(	aal_device_t *device)	/* device to be closed */{	aal_assert("umka-430", device != NULL);	if (device->ops->close)		device->ops->close(device);		aal_free(device);}/* Returns current block size from specified device */uint32_t aal_device_get_bs(	aal_device_t *device)	/* device blocksize will be received from */{	aal_assert("umka-432", device != NULL);	return device->blksize;}/* Performs read operation on specified device. Actualy it calls corresponding   operation (read) from assosiated with device operations. Returns error code,   see types.h for more detailed description of errno_t. */errno_t aal_device_read(	aal_device_t *device,	/* device instance we will read from */	void *buff,		/* buffer we will read into */	blk_t block,		/* block number to be read from */	count_t count)		/* count of blocks to be read */{	aal_assert("umka-433", device != NULL);	aal_device_check_routine(device, read, return -EINVAL);	return device->ops->read(device, buff, block, count);}/* Returns device length in blocks */count_t aal_device_len(	aal_device_t *device)	/* device, length in blocks will be get from */{	aal_assert("vpf-216", device != NULL);	aal_device_check_routine(device, len,				 return INVAL_BLK);		return device->ops->len(device);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美专区在线观看一区| eeuss国产一区二区三区| 亚洲欧美经典视频| 国产天堂亚洲国产碰碰| 精品粉嫩超白一线天av| 日韩亚洲电影在线| 4438x亚洲最大成人网| 欧美精品久久久久久久久老牛影院| 在线观看中文字幕不卡| 日本久久一区二区三区| 精品日韩一区二区| 精品久久人人做人人爽| 久久久噜噜噜久久人人看| 亚洲精品在线观看网站| 国产亚洲制服色| 国产精品久久久一本精品| 国产精品福利一区| 一区二区三区四区乱视频| 夜夜嗨av一区二区三区中文字幕| 亚洲大片一区二区三区| 日韩高清在线观看| 韩国女主播一区| 成人毛片在线观看| 91麻豆福利精品推荐| 欧美熟乱第一页| 精品精品国产高清一毛片一天堂| 国产人成一区二区三区影院| 亚洲三级在线免费| 日韩国产欧美在线视频| 国产美女精品在线| 97精品电影院| 日韩一卡二卡三卡| 国产视频一区在线播放| 一区二区在线观看不卡| 免费在线观看一区| 成人午夜电影网站| 91高清视频在线| 精品理论电影在线观看| 亚洲欧洲另类国产综合| 国产成人免费视频一区| 欧美午夜在线一二页| 2024国产精品视频| 亚洲三级理论片| 蜜桃av一区二区三区电影| 成人精品gif动图一区| 欧美日韩一级片网站| 国产亚洲福利社区一区| 亚洲精品久久久久久国产精华液| 国产一区二区在线免费观看| 欧美日韩视频专区在线播放| 国产亚洲自拍一区| 日韩黄色一级片| 一本大道久久a久久精品综合| 欧美tk—视频vk| 亚洲成人av免费| 99精品视频一区二区三区| 欧美一级xxx| 亚洲无线码一区二区三区| 高清beeg欧美| 久久亚洲一区二区三区四区| 日韩国产欧美在线播放| 色8久久人人97超碰香蕉987| 欧美国产一区在线| 紧缚捆绑精品一区二区| 欧美一区国产二区| 一级精品视频在线观看宜春院| 国产成人免费视频| 日韩欧美国产高清| 日韩国产欧美在线观看| 欧美老年两性高潮| 一区二区三区四区蜜桃| 91免费在线视频观看| 国产亚洲视频系列| 精品中文av资源站在线观看| 日韩欧美三级在线| 免费在线观看日韩欧美| 制服丝袜av成人在线看| 午夜电影网一区| 欧美色偷偷大香| 天堂成人免费av电影一区| 欧美日韩电影在线| 日日夜夜精品视频免费| 欧美日韩国产a| 免费在线观看日韩欧美| 精品日韩在线观看| 狠狠色丁香久久婷婷综| 久久久久久9999| 成人亚洲精品久久久久软件| 国产精品国产三级国产aⅴ入口| 国产成人在线电影| 国产精品久久777777| 成人av资源站| 亚洲一区二区三区免费视频| 中文字幕免费观看一区| av高清不卡在线| 91精品国产乱码久久蜜臀| 亚洲五码中文字幕| 宅男噜噜噜66一区二区66| 蜜臀av一区二区三区| 2017欧美狠狠色| 99免费精品视频| 亚洲国产精品一区二区www在线| 欧美日韩和欧美的一区二区| 久久国产精品色婷婷| 国产欧美一区二区三区网站 | 欧美日精品一区视频| 亚洲成a人在线观看| www国产成人免费观看视频 深夜成人网| 国产成人免费xxxxxxxx| 亚洲国产wwwccc36天堂| 日韩精品在线网站| 色菇凉天天综合网| 日本亚洲天堂网| 国产精品成人免费在线| 6080日韩午夜伦伦午夜伦| 国产一区二区三区在线观看精品| 亚洲欧洲精品成人久久奇米网| 欧美日韩一级黄| 99re这里只有精品首页| 麻豆一区二区三| 亚洲女人小视频在线观看| 精品久久久久久久人人人人传媒| 99久久精品国产导航| 麻豆91精品91久久久的内涵| 亚洲男人的天堂在线aⅴ视频| 精品久久久三级丝袜| 色播五月激情综合网| 国产美女精品一区二区三区| 亚洲mv在线观看| 亚洲蜜桃精久久久久久久| 国产色综合久久| 欧美一区二区网站| 欧美亚洲高清一区| 91丨porny丨首页| 国产一区二区三区黄视频 | 亚洲一区二区三区影院| 久久先锋影音av| 精品国产91久久久久久久妲己| 欧美丝袜丝交足nylons| 91色porny蝌蚪| 不卡的电影网站| 国产九色sp调教91| 青娱乐精品视频| 日韩高清欧美激情| 亚洲国产cao| 亚洲成人激情综合网| 一区二区免费看| 亚洲女与黑人做爰| 亚洲精品中文在线| 亚洲欧美另类在线| 日韩毛片视频在线看| 国产精品午夜电影| 国产亚洲精品超碰| 久久九九99视频| 国产欧美日韩麻豆91| 国产精品久线观看视频| 欧美国产精品专区| 中文字幕不卡在线| 国产精品国产自产拍在线| 国产欧美日韩中文久久| 国产精品色在线| 亚洲美腿欧美偷拍| 亚洲成人tv网| 蜜臀av性久久久久蜜臀aⅴ流畅| 婷婷中文字幕一区三区| 日韩成人免费电影| 国产综合色在线| 国产mv日韩mv欧美| 色综合天天综合色综合av| 欧美最猛黑人xxxxx猛交| 欧美色爱综合网| 欧美mv日韩mv国产网站app| 欧美草草影院在线视频| 国产亚洲人成网站| 亚洲精品菠萝久久久久久久| 亚洲午夜精品一区二区三区他趣| 五月婷婷综合在线| 麻豆成人在线观看| a美女胸又www黄视频久久| 在线观看www91| 精品久久久三级丝袜| 亚洲丝袜美腿综合| 亚洲aaa精品| 国产东北露脸精品视频| 91美女片黄在线| 精品91自产拍在线观看一区| 中文字幕亚洲欧美在线不卡| 亚洲福利视频一区二区| 极品美女销魂一区二区三区免费 | 亚洲色图在线播放| 玖玖九九国产精品| 91日韩在线专区| 精品久久久久av影院| 一区二区三区四区在线| 久久国产麻豆精品| 色综合久久久久综合体| 日韩一区二区在线观看| 亚洲人精品一区| 国产精品亚洲人在线观看| 欧美日韩午夜影院|