#ifndef SILO_H #define SILO_H #include #define CMD_LENG 512 extern unsigned long _start; struct aout_hdr { int magic; int ltext; int ldata; int lbss; int lsym; int lentry; int x1; int x2; }; typedef struct { unsigned char info[128]; /* Informative text string */ unsigned char spare0[14]; struct sun_info { unsigned char spare1; unsigned char id; unsigned char spare2; unsigned char flags; } infos[8]; unsigned char spare1[246]; /* Boot information etc. */ unsigned short rspeed; /* Disk rotational speed */ unsigned short pcylcount; /* Physical cylinder count */ unsigned short sparecyl; /* extra sects per cylinder */ unsigned char spare2[4]; /* More magic... */ unsigned short ilfact; /* Interleave factor */ unsigned short ncyl; /* Data cylinder count */ unsigned short nacyl; /* Alt. cylinder count */ unsigned short ntrks; /* Tracks per cylinder */ unsigned short nsect; /* Sectors per track */ unsigned char spare3[4]; /* Even more magic... */ struct sun_partition { unsigned int start_cylinder; unsigned int num_sectors; } partitions[8]; unsigned short magic; /* Magic number */ unsigned short csum; /* Label xor'd checksum */ } sun_partition; #define SUN_LABEL_MAGIC 0xDABE struct silo_inode { unsigned int inolen; unsigned int mtime; unsigned int size; unsigned int mode; unsigned int uid; unsigned int gid; unsigned char name[0]; }; /* Options for cmd for load_file */ #define LOADFILE_GZIP 0x01 #define LOADFILE_LS 0x02 #define LOADFILE_MATCH 0x04 #define LOADFILE_QUIET 0x08 #define LOADFILE_NO_ROTATE 0x10 #define LOADFILE_LS_MATCH (LOADFILE_MATCH | LOADFILE_MATCH) /* cmdline.c */ void silo_cmdinit(void); void silo_cmdedit(void (*)(void), int); extern char cbuff[]; extern char passwdbuff[]; /* ls.c */ #define LSOPT_L 1 #define LSOPT_T 2 #define LSOPT_R 4 extern int ls_opt; int do_ls (unsigned char *, int *); /* disk.c */ char *silo_disk_get_bootdevice(void); int silo_diskinit(void); int silo_disk_read(char *, int, unsigned long long); int silo_disk_open(char *); int silo_disk_setdisk(char *); int silo_disk_partitionable(void); void silo_disk_close(void); /* printf.c */ int vprintf (char *, va_list); int vsprintf (char *str, char *fmt, va_list adx); int sprintf (char *s, char *format, ...); int putchar (int); /* malloc.c */ void *malloc (int); void free (void *); void mark (void **); void release (void *); /* file.c */ int silo_load_file(char *, int, char *, unsigned char *, unsigned char *, int *, int, void (*)(int, char **, char **)); /* misc.c */ void silo_fatal(const char *); char *silo_get_bootargs(int); void silo_show_bootargs(void); void silo_set_bootargs(char *, char *); void silo_set_prollargs(char *, unsigned int, int); char *silo_v0_device(char *); enum arch silo_get_architecture(void); unsigned char *silo_find_linux_HdrS(char *, int); void print_message(char *); void get_idprom(void); char *get_syspackage(void); char *seed_part_into_device (char *device, int part); /* cfg.c */ int cfg_parse (char *, char *, int); char *cfg_get_strg (char *, char *); int cfg_get_flag (char *, char *); int cfg_print_images (char *, char *); char *cfg_get_default (void); /* strtol.c */ int strtol (const char *, char **, int); #define atoi(a) strtol(a,0,10) /* decompress.c */ int decompress (char *, char *, unsigned char (*)(void), void (*)(void)); /* main.c */ extern enum arch architecture; extern int sun4v_cpu; /* timer.c */ int init_timer (); void close_timer (); int get_ticks (void); void reset_ticks (void); /* memory.c */ char *memory_find (int); void memory_release (void); char *image_memory_find (unsigned int len); void image_memory_release (void); struct linux_mlist_v0 *prom_meminit (void); int sun4c_mapio (unsigned long, unsigned long, int); void sun4c_unmapio (unsigned long); /* libc */ char *strdup (const char *); char *strstr (const char *, const char *); int strcmp (const char *, const char *); char *strcat (char *, const char *); #undef tolower int tolower (int); int strcasecmp (const char *, const char *); #endif .