diff options
author | nick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-01-15 08:33:09 +0000 |
---|---|---|
committer | nick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-01-15 08:33:09 +0000 |
commit | 5f3109cf1215c57e1dcada1fb27182240d01c79b (patch) | |
tree | 2a95aa1d83190202c9b3e0bf988080251bcb8645 /libdha/libdha.c | |
parent | 798a238afabbd6238469028da2109bd5d739a618 (diff) | |
download | mpv-5f3109cf1215c57e1dcada1fb27182240d01c79b.tar.bz2 mpv-5f3109cf1215c57e1dcada1fb27182240d01c79b.tar.xz |
Improved readability and new stuffs
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4165 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libdha/libdha.c')
-rw-r--r-- | libdha/libdha.c | 97 |
1 files changed, 24 insertions, 73 deletions
diff --git a/libdha/libdha.c b/libdha/libdha.c index 923ed766d4..ddd27aca5e 100644 --- a/libdha/libdha.c +++ b/libdha/libdha.c @@ -26,87 +26,38 @@ #include <sys/types.h> #include <unistd.h> -#ifdef _WIN32 -// MAPDEV.h - include file for VxD MAPDEV -// Copyright (c) 1996 Vireo Software, Inc. - -#include <windows.h> - -// This is the request structure that applications use -// to request services from the MAPDEV VxD. - -typedef struct _MapDevRequest -{ - DWORD mdr_ServiceID; // supplied by caller - LPVOID mdr_PhysicalAddress; // supplied by caller - DWORD mdr_SizeInBytes; // supplied by caller - LPVOID mdr_LinearAddress; // returned by VxD - WORD mdr_Selector; // returned if 16-bit caller - WORD mdr_Status; // MDR_xxxx code below -} MAPDEVREQUEST, *PMAPDEVREQUEST; - -#define MDR_SERVICE_MAP CTL_CODE(FILE_DEVICE_UNKNOWN, 1, METHOD_NEITHER, FILE_ANY_ACCESS) -#define MDR_SERVICE_UNMAP CTL_CODE(FILE_DEVICE_UNKNOWN, 2, METHOD_NEITHER, FILE_ANY_ACCESS) - -#define MDR_STATUS_SUCCESS 1 -#define MDR_STATUS_ERROR 0 -/*#include "winioctl.h"*/ -#define FILE_DEVICE_UNKNOWN 0x00000022 -#define METHOD_NEITHER 3 -#define FILE_ANY_ACCESS 0 -#define CTL_CODE( DeviceType, Function, Method, Access ) ( \ - ((DeviceType)<<16) | ((Access)<<14) | ((Function)<<2) | (Method) ) - -/* Memory Map a piece of Real Memory */ -void *map_phys_mem(unsigned base, unsigned size) { - - HANDLE hDevice ; - PVOID inBuf[1] ; /* buffer for struct pointer to VxD */ - DWORD RetInfo[2] ; /* buffer to receive data from VxD */ - DWORD cbBytesReturned ; /* count of bytes returned from VxD */ - MAPDEVREQUEST req ; /* map device request structure */ - DWORD *pNicstar, Status, Time ; int i ; char *endptr ; - const PCHAR VxDName = "\\\\.\\MAPDEV.VXD" ; - const PCHAR VxDNameAlreadyLoaded = "\\\\.\\MAPDEV" ; - - hDevice = CreateFile(VxDName, 0,0,0, - CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0) ; - if (hDevice == INVALID_HANDLE_VALUE) - hDevice = CreateFile(VxDNameAlreadyLoaded, 0,0,0, - CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0) ; - if (hDevice == INVALID_HANDLE_VALUE) { - fprintf(stderr, "Cannot open driver, error=%08lx\n", GetLastError()) ; - exit(1) ; } - - req.mdr_ServiceID = MDR_SERVICE_MAP ; - req.mdr_PhysicalAddress = (PVOID)base ; - req.mdr_SizeInBytes = size ; - inBuf[0] = &req ; - - if ( ! DeviceIoControl(hDevice, MDR_SERVICE_MAP, inBuf, sizeof(PVOID), - NULL, 0, &cbBytesReturned, NULL) ) { - fprintf(stderr, "Failed to map device\n") ; exit(1) ; } - - return (void*)req.mdr_LinearAddress ; -} - -void unmap_phys_mem(void *ptr, unsigned size) { } - +#if defined(_WIN32) +#include "sysdep/libdha_win32.c" +#elif defined (__EMX__) +#include "sysdep/libdha_os2.c" #else + +#if defined(SVR4) || defined(SCO325) +# if !(defined(sun) && defined (i386) && defined (SVR4)) +# define DEV_MEM "/dev/pmem" +# elif defined(PowerMAX_OS) +# define DEV_MEM "/dev/iomem" +# endif +# ifdef SCO325 +# undef DEV_MEM +# define DEV_MEM "/dev/mem" +# endif +# endif /* SVR4 */ + +/* Generic version */ #include <sys/mman.h> +#ifndef DEV_MEM +#define DEV_MEM "/dev/mem" +#endif + static int mem=-1; void *map_phys_mem(unsigned base, unsigned size) { - void *ptr; - if ( (mem = open("/dev/mem",O_RDWR)) == -1) { + if ( (mem = open(DEV_MEM,O_RDWR)) == -1) { perror("libdha: open(/dev/mem) failed") ; exit(1) ; } - ptr=mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,mem,base) ; - if ((int)ptr == -1) { - perror("libdha: mmap() failed") ; exit(1) ; - } - return ptr; + return mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,mem,base) ; } void unmap_phys_mem(void *ptr, unsigned size) |