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

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

?? pktcdvd.h

?? umon bootloader source code, support mips cpu.
?? H
字號:
/*
 * Copyright (C) 2000 Jens Axboe <axboe@suse.de>
 * Copyright (C) 2001-2004 Peter Osterlund <petero2@telia.com>
 *
 * May be copied or modified under the terms of the GNU General Public
 * License.  See linux/COPYING for more information.
 *
 * Packet writing layer for ATAPI and SCSI CD-R, CD-RW, DVD-R, and
 * DVD-RW devices.
 *
 */
#ifndef __PKTCDVD_H
#define __PKTCDVD_H

#include <linux/types.h>

/*
 * 1 for normal debug messages, 2 is very verbose. 0 to turn it off.
 */
#define PACKET_DEBUG		1

#define	MAX_WRITERS		8

#define PKT_RB_POOL_SIZE	512

/*
 * How long we should hold a non-full packet before starting data gathering.
 */
#define PACKET_WAIT_TIME	(HZ * 5 / 1000)

/*
 * use drive write caching -- we need deferred error handling to be
 * able to sucessfully recover with this option (drive will return good
 * status as soon as the cdb is validated).
 */
#if defined(CONFIG_CDROM_PKTCDVD_WCACHE)
#define USE_WCACHING		1
#else
#define USE_WCACHING		0
#endif

/*
 * No user-servicable parts beyond this point ->
 */

/*
 * device types
 */
#define PACKET_CDR		1
#define	PACKET_CDRW		2
#define PACKET_DVDR		3
#define PACKET_DVDRW		4

/*
 * flags
 */
#define PACKET_WRITABLE		1	/* pd is writable */
#define PACKET_NWA_VALID	2	/* next writable address valid */
#define PACKET_LRA_VALID	3	/* last recorded address valid */
#define PACKET_MERGE_SEGS	4	/* perform segment merging to keep */
					/* underlying cdrom device happy */

/*
 * Disc status -- from READ_DISC_INFO
 */
#define PACKET_DISC_EMPTY	0
#define PACKET_DISC_INCOMPLETE	1
#define PACKET_DISC_COMPLETE	2
#define PACKET_DISC_OTHER	3

/*
 * write type, and corresponding data block type
 */
#define PACKET_MODE1		1
#define PACKET_MODE2		2
#define PACKET_BLOCK_MODE1	8
#define PACKET_BLOCK_MODE2	10

/*
 * Last session/border status
 */
#define PACKET_SESSION_EMPTY		0
#define PACKET_SESSION_INCOMPLETE	1
#define PACKET_SESSION_RESERVED		2
#define PACKET_SESSION_COMPLETE		3

#define PACKET_MCN			"4a656e734178626f65323030300000"

#undef PACKET_USE_LS

#define PKT_CTRL_CMD_SETUP	0
#define PKT_CTRL_CMD_TEARDOWN	1
#define PKT_CTRL_CMD_STATUS	2

struct pkt_ctrl_command {
	__u32 command;				/* in: Setup, teardown, status */
	__u32 dev_index;			/* in/out: Device index */
	__u32 dev;				/* in/out: Device nr for cdrw device */
	__u32 pkt_dev;				/* in/out: Device nr for packet device */
	__u32 num_devices;			/* out: Largest device index + 1 */
	__u32 padding;				/* Not used */
};

/*
 * packet ioctls
 */
#define PACKET_IOCTL_MAGIC	('X')
#define PACKET_CTRL_CMD		_IOWR(PACKET_IOCTL_MAGIC, 1, struct pkt_ctrl_command)

#ifdef __KERNEL__
#include <linux/blkdev.h>
#include <linux/completion.h>
#include <linux/cdrom.h>

struct packet_settings
{
	__u8			size;		/* packet size in (512 byte) sectors */
	__u8			fp;		/* fixed packets */
	__u8			link_loss;	/* the rest is specified
						 * as per Mt Fuji */
	__u8			write_type;
	__u8			track_mode;
	__u8			block_mode;
};

/*
 * Very crude stats for now
 */
struct packet_stats
{
	unsigned long		pkt_started;
	unsigned long		pkt_ended;
	unsigned long		secs_w;
	unsigned long		secs_rg;
	unsigned long		secs_r;
};

struct packet_cdrw
{
	struct list_head	pkt_free_list;
	struct list_head	pkt_active_list;
	spinlock_t		active_list_lock; /* Serialize access to pkt_active_list */
	struct task_struct	*thread;
	atomic_t		pending_bios;
};

/*
 * Switch to high speed reading after reading this many kilobytes
 * with no interspersed writes.
 */
#define HI_SPEED_SWITCH 512

struct packet_iosched
{
	atomic_t		attention;	/* Set to non-zero when queue processing is needed */
	int			writing;	/* Non-zero when writing, zero when reading */
	spinlock_t		lock;		/* Protecting read/write queue manipulations */
	struct bio		*read_queue;
	struct bio		*read_queue_tail;
	struct bio		*write_queue;
	struct bio		*write_queue_tail;
	int			high_prio_read;	/* An important read request has been queued */
	int			successive_reads;
};

/*
 * 32 buffers of 2048 bytes
 */
#define PACKET_MAX_SIZE		32
#define PAGES_PER_PACKET	(PACKET_MAX_SIZE * CD_FRAMESIZE / PAGE_SIZE)
#define PACKET_MAX_SECTORS	(PACKET_MAX_SIZE * CD_FRAMESIZE >> 9)

enum packet_data_state {
	PACKET_IDLE_STATE,			/* Not used at the moment */
	PACKET_WAITING_STATE,			/* Waiting for more bios to arrive, so */
						/* we don't have to do as much */
						/* data gathering */
	PACKET_READ_WAIT_STATE,			/* Waiting for reads to fill in holes */
	PACKET_WRITE_WAIT_STATE,		/* Waiting for the write to complete */
	PACKET_RECOVERY_STATE,			/* Recover after read/write errors */
	PACKET_FINISHED_STATE,			/* After write has finished */

	PACKET_NUM_STATES			/* Number of possible states */
};

/*
 * Information needed for writing a single packet
 */
struct pktcdvd_device;

struct packet_data
{
	struct list_head	list;

	spinlock_t		lock;		/* Lock protecting state transitions and */
						/* orig_bios list */

	struct bio		*orig_bios;	/* Original bios passed to pkt_make_request */
	struct bio		*orig_bios_tail;/* that will be handled by this packet */
	int			write_size;	/* Total size of all bios in the orig_bios */
						/* list, measured in number of frames */

	struct bio		*w_bio;		/* The bio we will send to the real CD */
						/* device once we have all data for the */
						/* packet we are going to write */
	sector_t		sector;		/* First sector in this packet */
	int			frames;		/* Number of frames in this packet */

	enum packet_data_state	state;		/* Current state */
	atomic_t		run_sm;		/* Incremented whenever the state */
						/* machine needs to be run */
	long			sleep_time;	/* Set this to non-zero to make the state */
						/* machine run after this many jiffies. */

	atomic_t		io_wait;	/* Number of pending IO operations */
	atomic_t		io_errors;	/* Number of read/write errors during IO */

	struct bio		*r_bios[PACKET_MAX_SIZE]; /* bios to use during data gathering */
	struct page		*pages[PAGES_PER_PACKET];

	int			cache_valid;	/* If non-zero, the data for the zone defined */
						/* by the sector variable is completely cached */
						/* in the pages[] vector. */

	int			id;		/* ID number for debugging */
	struct pktcdvd_device	*pd;
};

struct pkt_rb_node {
	struct rb_node		rb_node;
	struct bio		*bio;
};

struct packet_stacked_data
{
	struct bio		*bio;		/* Original read request bio */
	struct pktcdvd_device	*pd;
};
#define PSD_POOL_SIZE		64

struct pktcdvd_device
{
	struct block_device	*bdev;		/* dev attached */
	dev_t			pkt_dev;	/* our dev */
	char			name[20];
	struct packet_settings	settings;
	struct packet_stats	stats;
	int			refcnt;		/* Open count */
	int			write_speed;	/* current write speed, kB/s */
	int			read_speed;	/* current read speed, kB/s */
	unsigned long		offset;		/* start offset */
	__u8			mode_offset;	/* 0 / 8 */
	__u8			type;
	unsigned long		flags;
	__u16			mmc3_profile;
	__u32			nwa;		/* next writable address */
	__u32			lra;		/* last recorded address */
	struct packet_cdrw	cdrw;
	wait_queue_head_t	wqueue;

	spinlock_t		lock;		/* Serialize access to bio_queue */
	struct rb_root		bio_queue;	/* Work queue of bios we need to handle */
	int			bio_queue_size;	/* Number of nodes in bio_queue */
	sector_t		current_sector;	/* Keep track of where the elevator is */
	atomic_t		scan_queue;	/* Set to non-zero when pkt_handle_queue */
						/* needs to be run. */
	mempool_t		*rb_pool;	/* mempool for pkt_rb_node allocations */

	struct packet_iosched   iosched;
	struct gendisk		*disk;
};

#endif /* __KERNEL__ */

#endif /* __PKTCDVD_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色综合久久| 精品免费一区二区三区| 国产一区二区在线免费观看| 99国产精品久| 国产精品午夜在线| 麻豆一区二区99久久久久| 日韩精品一区二区在线观看| 日韩激情在线观看| 91麻豆精品国产91久久久| 肉丝袜脚交视频一区二区| 91精品国产综合久久精品 | 中文字幕在线观看不卡| 精品一区二区三区欧美| 久久久久久久久久久黄色| 国产乱淫av一区二区三区| 久久综合色播五月| 国产成人亚洲综合a∨婷婷图片| 国产午夜精品福利| 国产精品白丝av| 国产精品情趣视频| 在线观看不卡视频| 日韩国产在线一| 欧美日韩国产美女| 国产精品77777竹菊影视小说| 久久精品人人爽人人爽| 国产69精品一区二区亚洲孕妇| 亚洲三级免费电影| 欧美猛男gaygay网站| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美成人精品1314www| 国产在线精品一区二区不卡了| 国产日韩欧美激情| 色哟哟精品一区| 韩国女主播成人在线| 亚洲国产成人午夜在线一区| 91成人免费网站| 日韩电影在线观看一区| 国产肉丝袜一区二区| 91国产成人在线| 毛片一区二区三区| 国产精品美女久久久久久久| 日韩一区二区精品在线观看| 国产一区二区免费看| 亚洲欧美视频在线观看| 91精品中文字幕一区二区三区| 成人激情小说网站| 午夜久久久久久久久久一区二区| 精品999在线播放| 国产一区二区三区免费看| 欧美电影免费观看完整版| 樱花影视一区二区| 国产成人午夜99999| 欧美亚洲日本国产| 一本色道久久综合狠狠躁的推荐| 欧美三区免费完整视频在线观看| 欧美一区二区三级| 精品三级在线看| 久草热8精品视频在线观看| 97精品国产露脸对白| 欧美在线制服丝袜| 久久综合色天天久久综合图片| 成人爱爱电影网址| 一区二区三区免费网站| 国产精品第五页| 日韩精品一区二区三区中文精品| 色网站国产精品| 91亚洲男人天堂| 国产福利一区二区三区| 五月天国产精品| 国产精品乱码一区二区三区软件 | 欧美一区二区视频观看视频| 国产精品一区二区在线观看不卡| 九色porny丨国产精品| 亚洲一区二三区| 国产精品第13页| 91精品国产综合久久久久久| 欧美日韩一区二区三区免费看| av亚洲精华国产精华| 国产一区二区在线观看免费| 亚洲成人av福利| 丝袜国产日韩另类美女| 综合电影一区二区三区| 国产精品无人区| 国产精品麻豆欧美日韩ww| 欧美激情一区二区三区全黄| 精品福利一区二区三区| 91精品午夜视频| 91精品国产欧美一区二区| 国产aⅴ精品一区二区三区色成熟| 久久国产视频网| 激情偷乱视频一区二区三区| 美国毛片一区二区三区| 蜜桃视频在线观看一区| 青娱乐精品在线视频| 黄色小说综合网站| 国产一区二区免费视频| 国产成人精品aa毛片| 激情偷乱视频一区二区三区| av亚洲精华国产精华精华| www.66久久| 91理论电影在线观看| 大胆欧美人体老妇| 99久久精品费精品国产一区二区| a亚洲天堂av| 在线看一区二区| 91麻豆精品国产91久久久资源速度| 91在线精品秘密一区二区| 91热门视频在线观看| 在线观看一区二区精品视频| 欧美日韩一区二区三区高清| 久久久噜噜噜久久人人看| 久久久www免费人成精品| 国产女主播视频一区二区| 久久综合色一综合色88| 一区二区三区四区五区视频在线观看| 亚洲综合免费观看高清完整版| 亚洲一线二线三线视频| 中文字幕综合网| 蜜桃视频在线观看一区二区| 国产另类ts人妖一区二区| 成人美女视频在线观看18| 欧美性生交片4| 欧美成人综合网站| 国产午夜精品福利| 亚洲bt欧美bt精品777| 国产成+人+日韩+欧美+亚洲| 欧美日本一区二区三区四区 | 成人免费视频一区二区| 欧美日韩亚州综合| 中文字幕av资源一区| 日本亚洲视频在线| 在线精品亚洲一区二区不卡| 久久色在线观看| 日韩在线一区二区三区| av电影在线不卡| 久久综合色综合88| 亚洲福利视频导航| a在线欧美一区| 国产偷国产偷精品高清尤物| 午夜欧美在线一二页| 92精品国产成人观看免费| 久久久五月婷婷| 午夜在线电影亚洲一区| 国产精品久久久久久久久搜平片| 久久丁香综合五月国产三级网站| 亚洲欧洲另类国产综合| 日本一区二区视频在线观看| 日日噜噜夜夜狠狠视频欧美人 | 免费的成人av| 在线精品视频免费观看| 国产三级精品视频| 国产一区二区三区黄视频 | 日本一区二区免费在线观看视频 | 国产剧情av麻豆香蕉精品| 欧美日韩成人综合在线一区二区| 亚洲久草在线视频| 99久久精品国产网站| 中文无字幕一区二区三区| 韩国av一区二区三区在线观看| 欧美一区二区三区免费大片| 秋霞电影网一区二区| 91麻豆精品久久久久蜜臀| 香蕉乱码成人久久天堂爱免费| 欧美在线不卡视频| 亚洲国产精品精华液网站| 在线观看亚洲专区| 亚洲成人一区在线| 欧美日韩国产综合久久| 亚洲成人黄色影院| 91精品国产综合久久香蕉麻豆| 午夜免费欧美电影| 在线免费观看成人短视频| 成人激情免费视频| 激情综合五月婷婷| 亚洲va欧美va国产va天堂影院| 欧美精品一区二区在线播放 | 亚洲成av人片在www色猫咪| 在线观看欧美精品| 国产激情精品久久久第一区二区| 亚洲人成网站精品片在线观看| 中文字幕一区二区三区在线不卡| 亚洲精品免费视频| 色悠久久久久综合欧美99| 一区二区三区日本| 欧美电影在哪看比较好| 久久国产精品区| 国产日韩精品一区二区三区| 成人激情免费视频| 亚洲午夜久久久久久久久久久 | 精品一区二区三区香蕉蜜桃| 久久亚洲一区二区三区明星换脸| 国产成人啪免费观看软件| 日韩美女啊v在线免费观看| 欧美影视一区在线| 蜜臀av一级做a爰片久久| 国产精品嫩草99a| 91豆麻精品91久久久久久| 麻豆精品久久久| 中文字幕一区二区三区乱码在线| 91国在线观看|