[Mplayer-cvslog] CVS: main/libdha libdha.c,1.4,1.5
Alex Beregszaszi
alex at mplayer.dev.hu
Sat Feb 2 08:05:36 CET 2002
Update of /cvsroot/mplayer/main/libdha
In directory mplayer:/var/tmp.root/cvs-serv24839
Modified Files:
libdha.c
Log Message:
added support for dhahelper
Index: libdha.c
===================================================================
RCS file: /cvsroot/mplayer/main/libdha/libdha.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- libdha.c 15 Jan 2002 15:59:53 -0000 1.4
+++ libdha.c 2 Feb 2002 07:05:33 -0000 1.5
@@ -7,7 +7,7 @@
Modified for GATOS/win/gfxdump.
2002 - library implementation by Nick Kurshev
- - some changes by Alex Beregszaszi
+ - dhahelper and some changes by Alex Beregszaszi
supported O/S's: SVR4, UnixWare, SCO, Solaris,
FreeBSD, NetBSD, 386BSD, BSDI BSD/386,
@@ -17,6 +17,8 @@
Original location: www.linuxvideo.org/gatos
*/
+#include "config.h"
+
#include "libdha.h"
#include "AsmMacros.h"
#include <stdio.h>
@@ -60,14 +62,44 @@
#define DEV_MEM "/dev/mem"
#endif
+#ifdef CONFIG_DHAHELPER
static int mem=-1;
void *map_phys_mem(unsigned base, unsigned size)
{
+ if ( (mem = open("/dev/dhahelper",O_RDWR)) < 0)
+ {
+ if ( (mem = open(DEV_MEM,O_RDWR)) == -1) {
+ perror("libdha: open(/dev/mem) failed") ; exit(1) ;
+ }
+ }
+ else
+ {
+ dhahelper_memory_t mem_req;
+
+ mem_req.operation = MEMORY_OP_MAP;
+ mem_req.start = base;
+ mem_req.offset = 0;
+ mem_req.size = size;
+
+ if (ioctl(mem, DHAHELPER_MEMORY, &mem_req) < 0)
+ {
+ perror("libdha: failed mapping throught kernel helper");
+ return NULL;
+ }
+ }
+ return mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,mem,base) ;
+}
+#else
+
+static int mem=-1;
+void *map_phys_mem(unsigned base, unsigned size)
+{
if ( (mem = open(DEV_MEM,O_RDWR)) == -1) {
perror("libdha: open(/dev/mem) failed") ; exit(1) ;
}
return mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,mem,base) ;
}
+#endif /* CONFIG_DHAHELPER */
void unmap_phys_mem(void *ptr, unsigned size)
{
More information about the MPlayer-cvslog
mailing list