r1954 - in trunk

dslinux_amadeus at dslinux.in-berlin.de dslinux_amadeus at dslinux.in-berlin.de
Mon Oct 1 23:40:28 CEST 2007


Author: amadeus
Date: 2007-10-01 23:40:22 +0200 (Mon, 01 Oct 2007)
New Revision: 1954

Log:
Implement primitive shared memory between client and server of nano-X

Modified: trunk/user/microwin/src/nanox/client.c
===================================================================
--- trunk/user/microwin/src/nanox/client.c	2007-10-01 17:56:53 UTC (rev 1953)
+++ trunk/user/microwin/src/nanox/client.c	2007-10-01 21:40:22 UTC (rev 1954)
@@ -3782,15 +3782,23 @@
 		return;
 	}
 
+#if NDSDRIVER
+	shmid = key;
+#else
 	shmid = shmget(key, shmsize, 0);
+#endif
 	if (shmid == -1) {
 		EPRINTF("nxclient: Can't shmget key %d: %m\n", key);
 		UNLOCK(&nxGlobalLock);
 		return;
 	}
 
+#if NDSDRIVER
+	nxSharedMem = (char *)shmid;
+#else
 	nxSharedMem = shmat(shmid, 0, 0);
 	shmctl(shmid,IPC_RMID,0);	/* Prevent other from attaching */
+#endif
 	if (nxSharedMem == (char *)-1) {
 		UNLOCK(&nxGlobalLock);
 		return;

Modified: trunk/user/microwin/src/nanox/srvnet.c
===================================================================
--- trunk/user/microwin/src/nanox/srvnet.c	2007-10-01 17:56:53 UTC (rev 1953)
+++ trunk/user/microwin/src/nanox/srvnet.c	2007-10-01 21:40:22 UTC (rev 1954)
@@ -1436,12 +1436,26 @@
 		goto bad;
 
 	for ( key=SHMKEY_BASE; key < SHMKEY_BASE+SHMKEY_MAX; key++ ) {
+#if NDSDRIVER
+		shmid = (int)malloc(req->size);
+		if (shmid)
+			key = shmid;
+		else {
+			shmid = -1;
+			errno = ENOMEM;
+		}
+#else
 		shmid = shmget(key,req->size,IPC_CREAT|IPC_EXCL|0666);
+#endif
 		if ( shmid == -1 ) {
 			if ( errno != EEXIST )
 				goto bad;
 		} else {
+#if NDSDRIVER
+			tmp = (char *)shmid;
+#else
 			tmp = shmat(shmid,0,0);
+#endif
 			if ( tmp == (char *)-1 )
 				goto bad;
 			curclient->shm_cmds = tmp;
@@ -2118,8 +2132,12 @@
 #if HAVE_SHAREDMEM_SUPPORT
 		if ( client->shm_cmds != 0 ) {
 			/* Free shared memory */
+#if NDSDRIVER
+			/* do nothing for now */
+#else
 			shmctl(client->shm_cmds_shmid,IPC_RMID,0);
 			shmdt(client->shm_cmds);
+#endif
 		}
 #endif
 GsPrintResources();

Modified: trunk/vendors/Nintendo/DLDI/config.vendor
===================================================================
--- trunk/vendors/Nintendo/DLDI/config.vendor	2007-10-01 17:56:53 UTC (rev 1953)
+++ trunk/vendors/Nintendo/DLDI/config.vendor	2007-10-01 21:40:22 UTC (rev 1954)
@@ -903,7 +903,7 @@
 # CONFIG_USER_MICROWIN_HAVE_PNG_SUPPORT is not set
 # CONFIG_USER_MICROWIN_HAVE_T1LIB_SUPPORT is not set
 # CONFIG_USER_MICROWIN_HAVE_FREETYPE_SUPPORT is not set
-# CONFIG_USER_MICROWIN_HAVE_SHAREDMEM_SUPPORT is not set
+CONFIG_USER_MICROWIN_HAVE_SHAREDMEM_SUPPORT=y
 # CONFIG_USER_MICROWIN_HAVE_HZK_SUPPORT is not set
 # CONFIG_USER_MICROWIN_HAVE_BIG5_SUPPORT is not set
 # CONFIG_USER_MICROWIN_HAVE_GB2312_SUPPORT is not set




More information about the dslinux-commit mailing list