⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geometry.h

📁 LINUX lilo-22.7 源代码。
💻 H
字号:
/* geometry.h  -  Device and file geometry computation *//*Copyright 1992-1998 Werner Almesberger.Copyright 1999-2004 John Coffman.All rights reserved.Licensed under the terms contained in the file 'COPYING' in the source directory.*/#ifndef GEOMETRY_H#define GEOMETRY_H#define LINUX 1#if LINUX#include <linux/fd.h>#include <linux/hdreg.h>#elsestruct hd_geometry {      unsigned char heads;      unsigned char sectors;      unsigned short cylinders;      unsigned long start;};/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x030n/0x031n */#define HDIO_GETGEO		0x0301	/* get device geometry */struct floppy_struct {	unsigned int	size,		/* nr of sectors total */			sect,		/* sectors per track */			head,		/* nr of heads */			track,		/* nr of tracks */			stretch;	/* !=0 means double track steps */#define FD_STRETCH 1#define FD_SWAPSIDES 2#define FD_ZEROBASED 4	unsigned char	gap,		/* gap1 size */			rate,		/* data rate. |= 0x40 for perpendicular */#define FD_2M 0x4#define FD_SIZECODEMASK 0x38#define FD_SIZECODE(floppy) (((((floppy)->rate&FD_SIZECODEMASK)>> 3)+ 2) %8)#define FD_SECTSIZE(floppy) ( (floppy)->rate & FD_2M ? \			     512 : 128 << FD_SIZECODE(floppy) )#define FD_PERP 0x40			spec1,		/* stepping rate, head unload time */			fmt_gap;	/* gap2 size */	const char	* name; /* used only for predefined formats */};#define FDGETPRM _IOR(2, 0x04, struct floppy_struct)#endif/* from <linux/kdev_t.h>  *//* These are for user-level "dev_t" */#define MINORBITS	8#define MINORMASK	((1U << MINORBITS) - 1)#define MAJOR(dev)	((unsigned int) ((dev) >> MINORBITS))#define MINOR(dev)	((unsigned int) ((dev) & MINORMASK))#define MKDEV(ma,mi)	(((ma) << MINORBITS) | (mi))/*  from <linux/fs.h> */#define BMAP_IOCTL 1		/* obsolete - kept for compatibility */#define FIBMAP	   _IO(0x00,1)	/* bmap access */#define FIGETBSZ   _IO(0x00,2)	/* get the block size used for bmap */typedef struct {    int device,heads;    int cylinders,sectors;    int start; /* partition offset */    int spb; /* sectors per block */    int fd,file;    int boot; /* non-zero after geo_open_boot */    int raid; /* file references require raid1 relocation */    dev_t dev, base_dev; /* real device if remapping (LVM, etc) */} GEOMETRY;typedef struct _dt_entry {    int device,bios;    int sectors;    int heads; /* 0 if inaccessible */    int cylinders;    int start;    struct _dt_entry *next;} DT_ENTRY;extern DT_ENTRY *disktab;unsigned char max_partno[256];/* index by major device number; entries must be 2**n-1 (7,15, or 63) */int has_partitions(dev_t dev);/* indicates that the specified device is a block hard disk device *//* returns the partition mask or 0 */void geo_init(char *name);/* Loads the disk geometry table. */int is_first(int device);/* Returns a non-zero integer if the specified device could be the first (i.e.   boot) disk, zero otherwise. */void geo_get(GEOMETRY *geo,int device,int user_device,int all);/* Obtains geometry information of the specified device. Sets the BIOS device   number to user_device unless -1. If ALL is zero, only the BIOS device number   is retrieved and the other geometry information is undefined. */int geo_open(GEOMETRY *geo,char *name,int flags);/* Opens the specified file or block device, obtains the necessary geometry   information and returns the file descriptor. If the name contains a BIOS   device specification (xxx:yyy), it is removed and stored in the geometry   descriptor. Returns the file descriptor of the opened object. */int geo_open_boot(GEOMETRY *geo,char *name);/* Like get_open, but only the first sector of the device is accessed. This   way, no geometry information is needed. */void geo_close(GEOMETRY *geo);/* Closes a file or device that has previously been opened by geo_open. */int geo_comp_addr(GEOMETRY *geo,int offset,SECTOR_ADDR *addr);/* Determines the address of the disk sector that contains the offset'th   byte of the specified file or device. Returns a non-zero value if such   a sector exists, zero if it doesn't. */int geo_find(GEOMETRY *geo,SECTOR_ADDR addr);/* lseeks in the file associated with GEO for the sector at address ADDR.   Returns a non-zero integer on success, zero on failure. */void geo_query_dev(GEOMETRY *geo,int device,int all);/* opens the specified device and gets the geometry information.  That   information is then stored in *geo */#if 0int geo_devscan(int device);/* called to fill in a disktab with arbitrary BIOS codes */#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -