summaryrefslogtreecommitdiff
path: root/lang/mono/patches/patch-cg
diff options
context:
space:
mode:
Diffstat (limited to 'lang/mono/patches/patch-cg')
-rw-r--r--lang/mono/patches/patch-cg155
1 files changed, 0 insertions, 155 deletions
diff --git a/lang/mono/patches/patch-cg b/lang/mono/patches/patch-cg
deleted file mode 100644
index 39216e7bc16..00000000000
--- a/lang/mono/patches/patch-cg
+++ /dev/null
@@ -1,155 +0,0 @@
-$NetBSD: patch-cg,v 1.3 2009/01/19 22:35:53 kefren Exp $
---- mono/utils/mono-mmap.c.orig 2009-01-19 10:32:55.000000000 +0200
-+++ mono/utils/mono-mmap.c 2009-01-19 18:29:41.000000000 +0200
-@@ -7,6 +7,9 @@
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/mman.h>
-+#ifdef __NetBSD__
-+#include <sys/shm.h>
-+#endif
- #include <fcntl.h>
- #include <string.h>
- #include <unistd.h>
-@@ -402,7 +405,11 @@
- const char *name;
- int i = 0;
- int curpid = getpid ();
-+#ifdef __NetBSD__
-+ GDir *dir = g_dir_open ("/tmp/", 0, NULL);
-+#else
- GDir *dir = g_dir_open ("/dev/shm/", 0, NULL);
-+#endif
- if (!dir)
- return mono_shared_area_instances_slow (array, count, cleanup);
- while ((name = g_dir_read_name (dir))) {
-@@ -421,8 +428,13 @@
- }
- if (curpid != pid && kill (pid, SIGCONT) == -1 && errno == ESRCH) {
- char buf [128];
-+#ifdef __NetBSD__
-+ g_snprintf (buf, sizeof (buf), "/tmp/mono.%d", pid);
-+ unlink (buf);
-+#else
- g_snprintf (buf, sizeof (buf), "/mono.%d", pid);
- shm_unlink (buf);
-+#endif
- }
- }
- g_dir_close (dir);
-@@ -439,10 +451,23 @@
- char buf [128];
- void *res;
- SAreaHeader *header;
-+#ifdef __NetBSD__
-+ key_t skey;
-+ int shms;
-+#endif
-
- /* perform cleanup of segments left over from dead processes */
- mono_shared_area_instances_helper (NULL, 0, TRUE);
-+#ifdef __NetBSD__
-+ g_snprintf(buf, sizeof (buf), "/tmp/mono.%d", pid);
-
-+ fd = open(buf, O_CREAT|O_EXCL|O_RDWR, S_IRUSR|S_IWUSR|S_IRGRP);
-+ if (fd == -1 && errno == EEXIST) {
-+ /* leftover */
-+ unlink(buf);
-+ fd = open(buf, O_CREAT|O_EXCL|O_RDWR, S_IRUSR|S_IWUSR|S_IRGRP);
-+ }
-+#else
- g_snprintf (buf, sizeof (buf), "/mono.%d", pid);
-
- fd = shm_open (buf, O_CREAT|O_EXCL|O_RDWR, S_IRUSR|S_IWUSR|S_IRGRP);
-@@ -451,11 +476,21 @@
- shm_unlink (buf);
- fd = shm_open (buf, O_CREAT|O_EXCL|O_RDWR, S_IRUSR|S_IWUSR|S_IRGRP);
- }
-+#endif
- /* in case of failure we try to return a memory area anyway,
- * even if it means the data can't be read by other processes
- */
- if (fd == -1)
- return malloc_shared_area (pid);
-+#ifdef __NetBSD__
-+ if ((skey = ftok(buf, 'M')) == ((key_t)-1) ||
-+ (shms = shmget(skey, size, IPC_CREAT)) == -1 ||
-+ (res = shmat(shms, NULL, 0)) == ((void*)-1)) {
-+ close(fd);
-+ unlink(buf);
-+ return malloc_shared_area(pid);
-+ }
-+#else
- if (ftruncate (fd, size) != 0) {
- shm_unlink (buf);
- close (fd);
-@@ -466,6 +501,7 @@
- close (fd);
- return malloc_shared_area (pid);
- }
-+#endif
- /* we don't need the file descriptor anymore */
- close (fd);
- header = res;
-@@ -482,8 +518,18 @@
- mono_shared_area_remove (void)
- {
- char buf [128];
-+#ifdef __NetBSD__
-+ key_t skey;
-+ int shms;
-+ struct shmid_ds shmds;
-+ g_snprintf(buf, sizeof (buf), "/tmp/mono.%d", getpid());
-+ if ((skey = ftok(buf, 'M')) != ((key_t)-1) &&
-+ (shms = shmget(skey, mono_pagesize(), IPC_CREAT)) != -1)
-+ shmctl(shms, IPC_RMID, &shmds);
-+#else
- g_snprintf (buf, sizeof (buf), "/mono.%d", getpid ());
- shm_unlink (buf);
-+#endif
- if (malloced_shared_area)
- g_free (malloced_shared_area);
- }
-@@ -497,6 +543,22 @@
- char buf [128];
- void *res;
-
-+#ifdef __NetBSD__
-+ key_t skey;
-+ int shms;
-+
-+ g_snprintf (buf, sizeof (buf), "/tmp/mono.%d", GPOINTER_TO_INT (pid));
-+
-+ fd = open(buf, O_RDONLY, S_IRUSR|S_IRGRP);
-+ if (fd == -1)
-+ return NULL;
-+ if ((skey = ftok(buf, 'M')) != ((key_t)-1) ||
-+ (shms = shmget(skey, mono_pagesize(), IPC_CREAT)) != -1 ||
-+ (res = shmat(shms, NULL, 0)) == ((void*)-1)) {
-+ close(fd);
-+ return NULL;
-+ }
-+#else
- g_snprintf (buf, sizeof (buf), "/mono.%d", GPOINTER_TO_INT (pid));
-
- fd = shm_open (buf, O_RDONLY, S_IRUSR|S_IRGRP);
-@@ -507,6 +569,7 @@
- close (fd);
- return NULL;
- }
-+#endif
- /* FIXME: validate the area */
- /* we don't need the file descriptor anymore */
- close (fd);
-@@ -517,7 +580,11 @@
- mono_shared_area_unload (void *area)
- {
- /* FIXME: currently we load only a page */
-+#ifdef __NetBSD__
-+ shmdt(area);
-+#else
- munmap (area, mono_pagesize ());
-+#endif
- }
-
- int