Re-add swapon.c, swapoff.c, and sys/swap.h
authorDavid Bartley <dtbartle@csclub.uwaterloo.ca>
Thu, 29 Jan 2009 22:26:56 +0000 (17:26 -0500)
committerDavid Bartley <dtbartle@csclub.uwaterloo.ca>
Thu, 29 Jan 2009 23:33:05 +0000 (18:33 -0500)
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/Makefile
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/swapoff.c [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/swapon.c [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/swap.h [new file with mode: 0644]

index 6a0c9cf..f2854d2 100644 (file)
@@ -52,7 +52,7 @@ sysdep_headers += sys/feature_tests.h sys/dirent.h sys/utime.h sys/machelf.h \
     sys/inttypes.h sys/atomic.h sys/machtypes.h sys/elf.h sys/mkdev.h \
     sys/klog.h
 sysdep_headers += rtld_db.h pcsample.h atomic.h bits/machtypes.h
-headers := $(filter-out sys/sysinfo.h sys/swap.h, $(headers))
+headers := $(filter-out sys/sysinfo.h, $(headers))
 endif
 
 ifeq ($(subdir),dirent)
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/swapoff.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/swapoff.c
new file mode 100644 (file)
index 0000000..3158073
--- /dev/null
@@ -0,0 +1,32 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sys/swap.h>
+#include <uadminP.h>
+#include <errno.h>
+
+int
+swapoff (const char *path)
+{
+  /* call uadmin */
+  sr.sr_name = (char*)path;
+  sr.sr_start = 0;
+  sr.sr_length = 0;
+  return uadmin (A_SWAPCTL, SC_REMOVE, (uintptr_t)&sr);
+}
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/swapon.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/swapon.c
new file mode 100644 (file)
index 0000000..656e4bf
--- /dev/null
@@ -0,0 +1,36 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sys/swap.h>
+#include <uadminP.h>
+#include <errno.h>
+
+int
+swapon (path)
+     const char *path;
+{
+  swapres_t sr;
+  int result;
+
+  /* call uadmin */
+  sr.sr_name = (char*)path;
+  sr.sr_start = 0;
+  sr.sr_length = 0;
+  return uadmin (A_SWAPCTL, SC_ADD, (uintptr_t)&sr);
+}
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/swap.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/swap.h
new file mode 100644 (file)
index 0000000..2e84766
--- /dev/null
@@ -0,0 +1,78 @@
+/* Calls to enable and disable swapping on specified locations.
+    OpenSolaris version.
+   Copyright (C) 1996, 1997, 2000, 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef __SYS_SWAP_H
+#define __SYS_SWAP_H
+
+/* Docs: http://docs.sun.com/app/docs/doc/816-5167/swapctl-2?a=view */
+
+#include <features.h>
+#include <bits/types.h>
+
+/* swapctl cmd values.  */
+#define SC_ADD         1
+#define SC_LIST                2
+#define SC_REMOVE      3
+#define SC_GETNSWP     4
+#define SC_AINFO       5
+
+/* swapctl arg for SC_ADD and SC_REMOVE.  */
+typedef struct swapres
+  {
+       char *sr_name;
+       __off_t sr_start;
+       __off_t sr_length;
+  } swapres_t;
+
+typedef struct swapent
+  {
+       char *ste_path;
+       __off_t ste_start;
+       __off_t ste_length;
+       long ste_pages;
+       long ste_free;
+       int ste_flags;
+  } swapent_t;
+
+/* ste_flags values.  */
+#define ST_INDEL       1
+#define ST_DOINGDEL    2
+
+/* swapctl arg for SC_LIST.  */
+typedef struct swaptable
+  {
+       int swt_n;
+       swapent_t swt_ent[1];
+  } swaptbl_t;
+
+__BEGIN_DECLS
+
+/* Make the block special device PATH available to the system for swapping.
+   This call is restricted to the super-user.  */
+extern int swapon (__const char *__path) __THROW;
+
+/* Stop using block special device PATH for swapping.  */
+extern int swapoff (__const char *__path) __THROW;
+
+extern int swapctl (int cmd, void *arg);
+
+__END_DECLS
+
+#endif /* sys/swap.h */