59 lines
1.3 KiB
C++
59 lines
1.3 KiB
C++
// devices.h
|
|
// Device subsystem for HOS
|
|
// Author: Josh Holtrop
|
|
// Date: 05/11/05
|
|
// Modified: 06/02/05
|
|
|
|
#ifndef __HOS_DEVICES_H__
|
|
#define __HOS_DEVICES_H__ __HOS_DEVICES_H__
|
|
|
|
#include "hos_defines.h"
|
|
|
|
#define DEV_INVALID_ACCESS -256
|
|
#define DEV_INVALID_DEVICE -257
|
|
#define DEV_EOF -1
|
|
|
|
#define MAJOR_MISC_CHAR 1
|
|
#define MAJOR_RAMDISK 2
|
|
#define MAJOR_VCONSOLE 4
|
|
|
|
#define BLOCK_SIZE 512
|
|
#define BLOCK_SIZE_LOG 9
|
|
|
|
#define DEV_MAJOR(x) (((x) >> 8) & 0xFF)
|
|
#define DEV_MINOR(x) ((x) & 0xFF)
|
|
#define DEV(x,y) ((x) << 8 | (y))
|
|
|
|
typedef short major_t;
|
|
typedef short minor_t;
|
|
typedef u32_t device_t;
|
|
|
|
#ifdef _HOS_CPP_
|
|
extern "C" {
|
|
#endif
|
|
|
|
int devices_init();
|
|
int block_read(major_t major, minor_t minor, u32_t blockStart, u32_t blocks, void *buffer);
|
|
int block_write(major_t major, minor_t minor, u32_t blockStart, u32_t blocks, void *buffer);
|
|
int char_read(major_t major, minor_t minor);
|
|
int char_write(major_t major, minor_t minor, int c);
|
|
|
|
#ifdef _HOS_CPP_
|
|
}
|
|
|
|
class DeviceDriver
|
|
{
|
|
public:
|
|
DeviceDriver();
|
|
virtual ~DeviceDriver();
|
|
virtual int char_read(minor_t minor);
|
|
virtual int char_write(minor_t minor, int c);
|
|
virtual int block_read(minor_t minor, u32_t blockStart, u32_t blocks, void *buffer);
|
|
virtual int block_write(minor_t minor, u32_t blockStart, u32_t blocks, void *buffer);
|
|
};
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|