* 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:
Corinna Vinschen
2000-10-07 17:35:36 +00:00
parent 7aadaf0f7e
commit 4ea34a6850
5 changed files with 185 additions and 30 deletions

View File

@ -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 ();
};