tools.h

Go to the documentation of this file.
00001 /* Constants describing the disk */
00002 #define SECTOR_SIZE     512
00003 #define SECTOR_SHIFT    9
00004 #define RATIO(b)        ((b)/SECTOR_SIZE)
00005 #define ISO_SECTOR_SIZE 2048
00006 #define ISO_PVD_OFFSET  16
00007 #define HRATIO          (SECTOR_SIZE / HCLICK_SIZE)
00008 #define PARAMSEC        1       /* sector containing boot parameters */
00009 #define DSKBASE         0x1E    /* floppy disk parameter vector */
00010 #define DSKPARSIZE      11      /* there are this many bytes of parameters */
00011 #define ESC             '\33'   /* escape key */
00012 #define HEADERSEG       0x0060  /* place for an array of struct exec's */
00013 #define MINIXSEG        0x0080  /* MINIX loaded here (rounded up to a click) */
00014 #define BOOTSEG         0x07C0  /* bootstraps are loaded here */
00015 #define SIGNATURE       0xAA55  /* proper bootstraps have this signature */
00016 #define SIGNATPOS       510     /* offset within bootblock */
00017 #define FREESEG         0x0800  /* Memory from FREESEG to cseg is free */
00018 #define MSEC_PER_TICK   55      /* 18.2 ticks per second */
00019 
00020 /* Scan codes for four different keyboards (from kernel/keyboard.c) */
00021 #define DUTCH_EXT_SCAN    32    /* 'd' */
00022 #define OLIVETTI_SCAN     12    /* '=' key on olivetti */
00023 #define STANDARD_SCAN     13    /* '=' key on IBM */
00024 #define US_EXT_SCAN       22    /* 'u' */
00025 
00026 /* Other */
00027 #define ROOT_INO ((ino_t) 1)    /* Inode nr of root dir. */
00028 #define IM_NAME_MAX       63
00029 
00030 /* Variables */
00031 #ifndef EXTERN
00032 #define EXTERN extern
00033 #endif
00034 
00035 typedef struct vector {
00036   u16_t offset;
00037   u16_t segment;
00038 } vector;
00039 
00040 struct image_header {
00041   char name[IM_NAME_MAX + 1];   /* Null terminated. */
00042   struct exec process;
00043 };
00044 
00045 EXTERN vector rem_part;         /* boot partition table entry */
00046 EXTERN u16_t cseg, dseg;        /* code and data segment of the boot program */
00047 EXTERN u32_t runsize;           /* size of this program */
00048 EXTERN u16_t device;            /* drive being booted from */
00049 EXTERN u16_t heads, sectors;    /* the drive's number of heads and sectors */
00050 extern u16_t eqscancode;        /* Set by peek/getch() if they see a '=' */
00051 
00052 /* Sticky attributes */
00053 #define E_SPECIAL       0x01    /* These are known to the program */
00054 #define E_DEV           0x02    /* The value is a device name */
00055 #define E_RESERVED      0x04    /* May not be set by user, e.g. scancode */
00056 #define E_STICKY        0x07    /* Don't go once set */
00057 
00058 /* Volatile attributes */
00059 #define E_VAR           0x08    /* Variable */
00060 #define E_FUNCTION      0x10    /* Function definition */
00061 
00062 typedef struct environment {
00063   struct environment *next;
00064   char flags;
00065   char *name;                   /* name = value */
00066   char *arg;                    /* name(arg) {value} */
00067   char *value;
00068   char *defval;                 /* Safehouse for default values */
00069 } environment;
00070 
00071 /* External variables */
00072 EXTERN environment *env;        /* Lists the environment */
00073 EXTERN int fsok;                /* True if the boot device contains an FS */
00074 EXTERN u32_t lowsec;            /* Offset to the file system on the boot dev */
00075 
00076 /* Prototypes */
00077 _PROTOTYPE( off_t r_super, (void));
00078 _PROTOTYPE( void r_stat, (Ino_t _inum, struct stat *_stp ));
00079 _PROTOTYPE( ino_t r_readdir, (char *_name ));
00080 _PROTOTYPE( off_t r_vir2abs, (off_t _virblk ));
00081 _PROTOTYPE( ino_t r_lookup, (Ino_t _cwd, char *_path ));
00082 
00083 #ifdef _MONHEAD
00084 _PROTOTYPE( void readerr, (off_t _sec, int _err ));
00085 _PROTOTYPE( int numprefix, (char *_s, char **_ps ));
00086 _PROTOTYPE( int numeric, (char *_s ));
00087 _PROTOTYPE( dev_t name2dev, (char *_name ));
00088 _PROTOTYPE( int delay, (char *_msec ));
00089 _PROTOTYPE( char *unix_err, (int _err ));
00090 _PROTOTYPE( void init_cache, (void));
00091 _PROTOTYPE( void invalidate_cache, (void));
00092 _PROTOTYPE( char *b_value, (char *_name ));
00093 _PROTOTYPE( void raw_copy, (int _doff, int _dseg, int _soff, int _sseg,
00094                                                 int _count));
00095 _PROTOTYPE( void raw_clear, (int _off, int _seg, int _count));
00096 _PROTOTYPE( void bootstrap, (int _device, int _partoff, int _partseg));
00097 
00098 _PROTOTYPE( long a2l, (char *_a ));
00099 _PROTOTYPE( char *ul2a, (u32_t _n ));
00100 _PROTOTYPE( char *u2a, (int _n1 ));
00101 
00102 /* Functions defined in monhead.s and usable by other files. */
00103 _PROTOTYPE( void reset_video, (int color));
00104 _PROTOTYPE( int dev_geometry, (void));
00105 _PROTOTYPE( u16_t get_ext_memsize, (void));
00106 _PROTOTYPE( u16_t get_low_memsize, (void));
00107 _PROTOTYPE( u16_t get_processor, (void));
00108 _PROTOTYPE( u32_t get_tick, (void));
00109 _PROTOTYPE( u16_t get_video, (void));
00110 _PROTOTYPE( u16_t get_word, (int _off, int _seg));
00111 _PROTOTYPE( int getchar, (void));
00112 _PROTOTYPE( void minix, (void));
00113 _PROTOTYPE( void minix86, (int _kcs, int _kds, char *_bpar, int _psize));
00114 _PROTOTYPE( void minix386, (int _kcs, int _kds, char *_bpar, int _psize));
00115 _PROTOTYPE( int peekchar, (void));
00116 _PROTOTYPE( void put_word, (int _off, int _seg, int _word));
00117 _PROTOTYPE( int putchar, (char _c));
00118 _PROTOTYPE( int readsectors, (int _off, int _seg, off_t _adr, int _ct));
00119 _PROTOTYPE( void reboot, (void));
00120 _PROTOTYPE( void relocate, (void));
00121 _PROTOTYPE( int writesectors, (int _off, int _seg, off_t _adr, int _ct));
00122 #endif
00123 

Generated on Fri Apr 14 22:57:23 2006 for minix by  doxygen 1.4.6