2004-12-09 22:57:09 +00:00
|
|
|
/*
|
|
|
|
*
|
2007-10-04 20:53:35 +00:00
|
|
|
* (c) 2004-2007 Laurent Vivier <Laurent@lvivier.info>
|
2004-12-09 22:57:09 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _LIBEMILE_H
|
|
|
|
#define _LIBEMILE_H
|
|
|
|
|
2006-06-01 22:18:38 +00:00
|
|
|
#undef USE_16BIT_CHECKSUM
|
|
|
|
|
2004-12-14 23:48:07 +00:00
|
|
|
#include <sys/types.h>
|
2004-12-10 00:22:06 +00:00
|
|
|
#include <sys/stat.h>
|
|
|
|
|
2005-11-26 08:45:07 +00:00
|
|
|
#include <libcontainer.h>
|
|
|
|
|
2004-12-09 22:57:09 +00:00
|
|
|
#define SCSI_SUPPORT
|
|
|
|
|
|
|
|
#include "../second/head.h"
|
2007-10-04 20:52:37 +00:00
|
|
|
#include "libmap.h"
|
2004-12-09 22:57:09 +00:00
|
|
|
|
|
|
|
#define EMILE_FIRST_TUNE_DRIVE 0x0001
|
|
|
|
#define EMILE_FIRST_TUNE_OFFSET 0x0002
|
|
|
|
#define EMILE_FIRST_TUNE_SIZE 0x0004
|
|
|
|
|
2006-09-13 21:32:45 +00:00
|
|
|
#define MAJOR_IDE0 3
|
2006-06-01 22:18:38 +00:00
|
|
|
#define MAJOR_LOOP 7
|
|
|
|
#define MAJOR_SD 8
|
2006-09-13 21:32:45 +00:00
|
|
|
#define MAJOR_IDE1 22
|
2006-06-01 22:18:38 +00:00
|
|
|
|
2004-12-12 22:57:59 +00:00
|
|
|
enum {
|
|
|
|
EEMILE_CANNOT_READ_FIRST = -2,
|
|
|
|
EEMILE_UNKNOWN_FIRST = -3,
|
|
|
|
EEMILE_CANNOT_WRITE_FIRST = -4,
|
|
|
|
EEMILE_MALLOC_ERROR = -5,
|
|
|
|
EEMILE_CANNOT_OPEN_FILE = -6,
|
|
|
|
EEMILE_CANNOT_WRITE_SECOND = -7,
|
|
|
|
EEMILE_CANNOT_WRITE_KERNEL = -8,
|
|
|
|
EEMILE_CANNOT_WRITE_RAMDISK = -9,
|
|
|
|
EEMILE_CANNOT_WRITE_PAD = -10,
|
|
|
|
EEMILE_CANNOT_CREATE_IMAGE = -11,
|
|
|
|
EEMILE_MISSING_FIRST = -12,
|
|
|
|
EEMILE_MISSING_SECOND = -13,
|
|
|
|
EEMILE_CANNOT_READ_SECOND = -14,
|
|
|
|
EEMILE_INVALID_SECOND = -15,
|
|
|
|
EEMILE_CANNOT_READ_KERNEL = -16,
|
|
|
|
};
|
|
|
|
|
2004-12-10 00:22:06 +00:00
|
|
|
static inline unsigned long emile_file_get_size(char* file)
|
|
|
|
{
|
2007-10-04 20:52:37 +00:00
|
|
|
struct stat result;
|
2004-12-10 00:22:06 +00:00
|
|
|
|
2007-10-04 20:52:37 +00:00
|
|
|
stat(file, &result);
|
2004-12-10 00:22:06 +00:00
|
|
|
|
2007-10-04 20:52:37 +00:00
|
|
|
return (result.st_size + FLOPPY_SECTOR_SIZE - 1)
|
|
|
|
/ FLOPPY_SECTOR_SIZE * FLOPPY_SECTOR_SIZE;
|
2004-12-10 00:22:06 +00:00
|
|
|
}
|
|
|
|
|
2004-12-09 22:57:09 +00:00
|
|
|
extern int emile_first_set_param(int fd, unsigned short tune_mask,
|
2004-12-10 00:22:06 +00:00
|
|
|
int drive_num, int second_offset,
|
|
|
|
int second_size);
|
|
|
|
extern int emile_first_get_param(int fd, int *drive_num, int *second_offset,
|
|
|
|
int *second_size);
|
2004-12-09 22:57:09 +00:00
|
|
|
extern int emile_first_set_param_scsi(int fd, char *second_name);
|
2006-09-20 21:47:43 +00:00
|
|
|
extern int emile_first_set_param_scsi_extents(int fd,
|
|
|
|
int drive_num, int second_offset,
|
2006-10-20 17:12:30 +00:00
|
|
|
int second_size,
|
|
|
|
int blocksize);
|
2007-02-24 13:35:32 +00:00
|
|
|
struct emile_container *emile_second_create_mapfile(unsigned short *unit_id, char *mapfile, char* kernel);
|
2006-06-01 22:18:38 +00:00
|
|
|
extern int emile_is_url(char *path);
|
2007-08-24 08:42:02 +00:00
|
|
|
extern int emile_floppy_create(char *image, char* first_level, char* second_level);
|
|
|
|
extern char* emile_floppy_add(int fd, char *image);
|
|
|
|
extern int emile_floppy_close(int fd);
|
2004-12-10 00:22:06 +00:00
|
|
|
extern int emile_floppy_create_image(char* first_level, char* second_level,
|
|
|
|
char* kernel_image, char* ramdisk,
|
2005-11-27 23:45:18 +00:00
|
|
|
char* image);
|
2007-02-24 13:35:32 +00:00
|
|
|
extern int emile_scsi_create_container(int fd, unsigned short *unit_id,
|
2005-11-29 23:28:23 +00:00
|
|
|
struct emile_container* container, int maxbloks);
|
2005-02-02 14:33:24 +00:00
|
|
|
extern unsigned short emile_checksum(unsigned char *addr, unsigned int length);
|
2006-10-15 16:49:31 +00:00
|
|
|
extern unsigned short emile_checksum_ATA(unsigned char *addr, unsigned int length);
|
2007-09-08 23:09:14 +00:00
|
|
|
extern int8_t* emile_second_get_configuration(int fd);
|
|
|
|
extern int emile_second_set_configuration(int fd, int8_t *configuration);
|
|
|
|
extern int emile_second_get_next_property(int8_t *configuration, int index, char *name, char *property);
|
|
|
|
extern int emile_second_get_property(int8_t *configuration, char *name, char *property);
|
|
|
|
extern void emile_second_set_property(int8_t *configuration, char *name, char *property);
|
|
|
|
extern void emile_second_remove_property(int8_t *configuration, char *name);
|
2006-06-01 23:01:08 +00:00
|
|
|
extern int emile_second_set_param(int fd, char *kernel, char *parameters, char *initrd);
|
2006-06-01 23:08:37 +00:00
|
|
|
extern int emile_second_get_param(int fd, char *kernel, char *parameters, char *initrd);
|
2007-10-09 19:10:15 +00:00
|
|
|
extern int emile_scsi_get_dev(int fd, int* driver, int *disk, int *partition);
|
|
|
|
extern int emile_get_dev_name(char *buffer, int driver, int disk, int partition);
|
|
|
|
extern int emile_scsi_get_rdev(char* dev_name, int* driver, int *disk, int *partition);
|
2004-12-09 22:57:09 +00:00
|
|
|
#endif
|