* fhandler.h (fhandler_dev_mem): Add methods mmap, munmap and msync.
Add `unit' member. * fhandler_mem.cc (fhandler_dev_mem): Initialize `unit' as well. (init): Care for differences between /dev/mem, /dev/kmem (not implemented yet) and /dev/port. (open): Change debug message to reflect the device. (mmap): New function. (munmap): Ditto. (msync): Ditto. (fstat): Use unit when setting st_dev in stat structure. * mmap.cc (mmap): Handle MAP_ANONYMOUS flag. Change error handling slightly. * path.cc (get_device_number): Handle /dev/port.
This commit is contained in:
@ -467,10 +467,9 @@ public:
|
||||
BOOL is_device () { return FALSE; }
|
||||
int fstat (struct stat *buf);
|
||||
|
||||
virtual HANDLE mmap (caddr_t *addr, size_t len, DWORD access,
|
||||
int flags, off_t off);
|
||||
virtual int munmap (HANDLE h, caddr_t addr, size_t len);
|
||||
virtual int msync (HANDLE h, caddr_t addr, size_t len, int flags);
|
||||
HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, off_t off);
|
||||
int munmap (HANDLE h, caddr_t addr, size_t len);
|
||||
int msync (HANDLE h, caddr_t addr, size_t len, int flags);
|
||||
};
|
||||
|
||||
class fhandler_serial: public fhandler_base
|
||||
@ -777,8 +776,9 @@ public:
|
||||
class fhandler_dev_mem: public fhandler_base
|
||||
{
|
||||
protected:
|
||||
unsigned long mem_size;
|
||||
unsigned long pos;
|
||||
int unit;
|
||||
DWORD mem_size;
|
||||
DWORD pos;
|
||||
bool init_phase;
|
||||
|
||||
void init (void);
|
||||
@ -795,6 +795,10 @@ public:
|
||||
int fstat (struct stat *buf);
|
||||
int dup (fhandler_base *child);
|
||||
|
||||
HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, off_t off);
|
||||
int munmap (HANDLE h, caddr_t addr, size_t len);
|
||||
int msync (HANDLE h, caddr_t addr, size_t len, int flags);
|
||||
|
||||
void dump ();
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user