diff options
Diffstat (limited to 'debian/patches')
-rw-r--r-- | debian/patches/0001-libpager-remove-the-seqno-parameters.patch | 330 | ||||
-rw-r--r-- | debian/patches/0002-libpager-use-libports-notification-functions.patch | 197 | ||||
-rw-r--r-- | debian/patches/series | 2 |
3 files changed, 529 insertions, 0 deletions
diff --git a/debian/patches/0001-libpager-remove-the-seqno-parameters.patch b/debian/patches/0001-libpager-remove-the-seqno-parameters.patch new file mode 100644 index 00000000..ff6b097e --- /dev/null +++ b/debian/patches/0001-libpager-remove-the-seqno-parameters.patch @@ -0,0 +1,330 @@ +From 8a7091da46e1600a2a7c8a2b14cea4c4269746fa Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Sun, 7 Dec 2014 17:22:31 +0100 +Subject: [PATCH hurd 1/2] libpager: remove the `seqno' parameters + +* libpager/Makefile (MIGSFLAGS): Drop `-DSEQNOS'. +* libpager/priv.h (struct pager): Drop fields `seqno' and `waitingforseqno'. +* libpager/chg-compl.c: Adopt accordingly. +* libpager/data-request.c: Likewise. +* libpager/data-return.c: Likewise. +* libpager/data-unlock.c: Likewise. +* libpager/demuxer.c: Likewise. +* libpager/lock-completed.c: Likewise. +* libpager/no-senders.c: Likewise. +* libpager/notify-stubs.c: Likewise. +* libpager/object-init.c: Likewise. +* libpager/object-terminate.c: Likewise. +* libpager/pager-create.c: Likewise. +* libpager/stubs.c: Likewise. +--- + libpager/Makefile | 2 +- + libpager/chg-compl.c | 3 +-- + libpager/data-request.c | 3 +-- + libpager/data-return.c | 13 ++++++------- + libpager/data-unlock.c | 3 +-- + libpager/demuxer.c | 4 ++-- + libpager/lock-completed.c | 3 +-- + libpager/no-senders.c | 3 +-- + libpager/notify-stubs.c | 15 +++++---------- + libpager/object-init.c | 3 +-- + libpager/object-terminate.c | 3 +-- + libpager/pager-create.c | 2 -- + libpager/priv.h | 3 --- + libpager/stubs.c | 9 +++------ + 14 files changed, 24 insertions(+), 45 deletions(-) + +diff --git a/libpager/Makefile b/libpager/Makefile +index a15a899..2bfd845 100644 +--- a/libpager/Makefile ++++ b/libpager/Makefile +@@ -31,7 +31,7 @@ HURDLIBS= ports + LDLIBS += -lpthread + OBJS = $(SRCS:.c=.o) memory_objectServer.o notifyServer.o + +-MIGSFLAGS = -DSEQNOS -imacros $(srcdir)/mig-mutate.h ++MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h + MIGCOMSFLAGS = -prefix _pager_ + + include ../Makeconf +diff --git a/libpager/chg-compl.c b/libpager/chg-compl.c +index 89ccfc8..1669092 100644 +--- a/libpager/chg-compl.c ++++ b/libpager/chg-compl.c +@@ -22,8 +22,7 @@ + when a memory_object_change_attributes call has completed. Read this + in combination with pager-attr.c. */ + kern_return_t +-_pager_seqnos_memory_object_change_completed (struct pager *p, +- mach_port_seqno_t seq, ++_pager_memory_object_change_completed (struct pager *p, + boolean_t maycache, + memory_object_copy_strategy_t strat) + { +diff --git a/libpager/data-request.c b/libpager/data-request.c +index 18f3de6..1ab7f44 100644 +--- a/libpager/data-request.c ++++ b/libpager/data-request.c +@@ -22,8 +22,7 @@ + + /* Implement pagein callback as described in <mach/memory_object.defs>. */ + kern_return_t +-_pager_seqnos_memory_object_data_request (struct pager *p, +- mach_port_seqno_t seqno, ++_pager_memory_object_data_request (struct pager *p, + mach_port_t control, + vm_offset_t offset, + vm_size_t length, +diff --git a/libpager/data-return.c b/libpager/data-return.c +index f16f323..d5707a9 100644 +--- a/libpager/data-return.c ++++ b/libpager/data-return.c +@@ -21,13 +21,12 @@ + #include <string.h> + #include <assert.h> + +-/* Worker function used by _pager_seqnos_memory_object_data_return +- and _pager_seqnos_memory_object_data_initialize. All args are +- as for _pager_seqnos_memory_object_data_return; the additional ++/* Worker function used by _pager_memory_object_data_return ++ and _pager_memory_object_data_initialize. All args are ++ as for _pager_memory_object_data_return; the additional + INITIALIZING arg identifies which function is calling us. */ + kern_return_t + _pager_do_write_request (struct pager *p, +- mach_port_seqno_t seqno, + mach_port_t control, + vm_offset_t offset, + pointer_t data, +@@ -113,6 +112,7 @@ _pager_do_write_request (struct pager *p, + than we really have to require (because *all* future writes on + this object are going to wait for seqno while we wait for the + previous write), but the case is relatively infrequent. */ ++ /* XXX: Is this still needed? */ + retry: + for (i = 0; i < npages; i++) + if (pm_entries[i] & PM_PAGINGOUT) +@@ -254,8 +254,7 @@ _pager_do_write_request (struct pager *p, + + /* Implement pageout call back as described by <mach/memory_object.defs>. */ + kern_return_t +-_pager_seqnos_memory_object_data_return (struct pager *p, +- mach_port_seqno_t seqno, ++_pager_memory_object_data_return (struct pager *p, + mach_port_t control, + vm_offset_t offset, + pointer_t data, +@@ -263,6 +262,6 @@ _pager_seqnos_memory_object_data_return (struct pager *p, + int dirty, + int kcopy) + { +- return _pager_do_write_request (p, seqno, control, offset, data, ++ return _pager_do_write_request (p, control, offset, data, + length, dirty, kcopy, 0); + } +diff --git a/libpager/data-unlock.c b/libpager/data-unlock.c +index 8c7c776..460a3cb 100644 +--- a/libpager/data-unlock.c ++++ b/libpager/data-unlock.c +@@ -22,8 +22,7 @@ + /* Implement kernel requests for access as described in + <mach/memory_object.defs>. */ + kern_return_t +-_pager_seqnos_memory_object_data_unlock (struct pager *p, +- mach_port_seqno_t seqno, ++_pager_memory_object_data_unlock (struct pager *p, + mach_port_t control, + vm_offset_t offset, + vm_size_t length, +diff --git a/libpager/demuxer.c b/libpager/demuxer.c +index a06c4bf..57a6ccb 100644 +--- a/libpager/demuxer.c ++++ b/libpager/demuxer.c +@@ -88,8 +88,8 @@ pager_demuxer (struct requests *requests, + error_t err = MIG_NO_REPLY; + + mig_routine_t routine; +- if (! ((routine = _pager_seqnos_memory_object_server_routine (inp)) || +- (routine = _pager_seqnos_notify_server_routine (inp)))) ++ if (! ((routine = _pager_memory_object_server_routine (inp)) || ++ (routine = _pager_notify_server_routine (inp)))) + return FALSE; + + #define MASK (8u - 1u) +diff --git a/libpager/lock-completed.c b/libpager/lock-completed.c +index 30b1dd3..de3ef85 100644 +--- a/libpager/lock-completed.c ++++ b/libpager/lock-completed.c +@@ -23,8 +23,7 @@ + when a memory_object_lock_request call has completed. Read this + in combination with lock-object.c. */ + kern_return_t +-_pager_seqnos_memory_object_lock_completed (struct pager *p, +- mach_port_seqno_t seqno, ++_pager_memory_object_lock_completed (struct pager *p, + mach_port_t control, + vm_offset_t offset, + vm_size_t length) +diff --git a/libpager/no-senders.c b/libpager/no-senders.c +index d0bbe27..b750101 100644 +--- a/libpager/no-senders.c ++++ b/libpager/no-senders.c +@@ -21,8 +21,7 @@ + #include "notify_S.h" + + error_t +-_pager_do_seqnos_mach_notify_no_senders (struct port_info *pi, +- mach_port_seqno_t seqno, ++_pager_do_mach_notify_no_senders (struct port_info *pi, + mach_port_mscount_t mscount) + { + if (!pi || +diff --git a/libpager/notify-stubs.c b/libpager/notify-stubs.c +index a826420..6440815 100644 +--- a/libpager/notify-stubs.c ++++ b/libpager/notify-stubs.c +@@ -23,8 +23,7 @@ + #include <errno.h> + + error_t +-_pager_do_seqnos_mach_notify_port_deleted (struct port_info *pi, +- mach_port_seqno_t seqno, ++_pager_do_mach_notify_port_deleted (struct port_info *pi, + mach_port_t name + __attribute__ ((unused))) + { +@@ -32,8 +31,7 @@ _pager_do_seqnos_mach_notify_port_deleted (struct port_info *pi, + } + + error_t +-_pager_do_seqnos_mach_notify_msg_accepted (struct port_info *pi, +- mach_port_seqno_t seqno, ++_pager_do_mach_notify_msg_accepted (struct port_info *pi, + mach_port_t name + __attribute__ ((unused))) + { +@@ -41,8 +39,7 @@ _pager_do_seqnos_mach_notify_msg_accepted (struct port_info *pi, + } + + error_t +-_pager_do_seqnos_mach_notify_port_destroyed (struct port_info *pi, +- mach_port_seqno_t seqno, ++_pager_do_mach_notify_port_destroyed (struct port_info *pi, + mach_port_t name + __attribute__ ((unused))) + { +@@ -50,15 +47,13 @@ _pager_do_seqnos_mach_notify_port_destroyed (struct port_info *pi, + } + + error_t +-_pager_do_seqnos_mach_notify_send_once (struct port_info *pi, +- mach_port_seqno_t seqno) ++_pager_do_mach_notify_send_once (struct port_info *pi) + { + return 0; + } + + error_t +-_pager_do_seqnos_mach_notify_dead_name (struct port_info *pi, +- mach_port_seqno_t seqno, ++_pager_do_mach_notify_dead_name (struct port_info *pi, + mach_port_t name + __attribute__ ((unused))) + { +diff --git a/libpager/object-init.c b/libpager/object-init.c +index eb62c44..985b1ba 100644 +--- a/libpager/object-init.c ++++ b/libpager/object-init.c +@@ -22,8 +22,7 @@ + /* Implement the object initialiation call as described in + <mach/memory_object.defs>. */ + kern_return_t +-_pager_seqnos_memory_object_init (struct pager *p, +- mach_port_seqno_t seqno, ++_pager_memory_object_init (struct pager *p, + mach_port_t control, + mach_port_t name, + vm_size_t pagesize) +diff --git a/libpager/object-terminate.c b/libpager/object-terminate.c +index e8c6f38..4d07d9c 100644 +--- a/libpager/object-terminate.c ++++ b/libpager/object-terminate.c +@@ -22,8 +22,7 @@ + /* Implement the object termination call from the kernel as described + in <mach/memory_object.defs>. */ + kern_return_t +-_pager_seqnos_memory_object_terminate (struct pager *p, +- mach_port_seqno_t seqno, ++_pager_memory_object_terminate (struct pager *p, + mach_port_t control, + mach_port_t name) + { +diff --git a/libpager/pager-create.c b/libpager/pager-create.c +index 1fc15b8..b583f02 100644 +--- a/libpager/pager-create.c ++++ b/libpager/pager-create.c +@@ -42,10 +42,8 @@ pager_create (struct user_pager_info *upi, + p->notify_on_evict = notify_on_evict; + p->memobjcntl = MACH_PORT_NULL; + p->memobjname = MACH_PORT_NULL; +- p->seqno = -1; + p->noterm = 0; + p->termwaiting = 0; +- p->waitingforseqno = 0; + p->pagemap = 0; + p->pagemapsize = 0; + +diff --git a/libpager/priv.h b/libpager/priv.h +index 4576e12..a45ae3f 100644 +--- a/libpager/priv.h ++++ b/libpager/priv.h +@@ -55,12 +55,9 @@ struct pager + memory_object_control_t memobjcntl; + memory_object_name_t memobjname; + +- mach_port_seqno_t seqno; +- + int noterm; /* number of threads blocking termination */ + + int termwaiting:1; +- int waitingforseqno:1; + + #ifdef KERNEL_INIT_RACE + /* Out of sequence object_init calls waiting for +diff --git a/libpager/stubs.c b/libpager/stubs.c +index c7f1a5a..06ad118 100644 +--- a/libpager/stubs.c ++++ b/libpager/stubs.c +@@ -21,8 +21,7 @@ + #include <stdio.h> + + kern_return_t +-_pager_seqnos_memory_object_copy (struct pager *p, +- mach_port_seqno_t seq, ++_pager_memory_object_copy (struct pager *p, + memory_object_control_t obj_ctl, + vm_offset_t off, + vm_size_t len, +@@ -33,8 +32,7 @@ _pager_seqnos_memory_object_copy (struct pager *p, + } + + kern_return_t +-_pager_seqnos_memory_object_data_write (struct pager *p, +- mach_port_seqno_t seq, ++_pager_memory_object_data_write (struct pager *p, + mach_port_t ctl, + vm_offset_t off, + pointer_t data, +@@ -45,8 +43,7 @@ _pager_seqnos_memory_object_data_write (struct pager *p, + } + + kern_return_t +-_pager_seqnos_memory_object_supply_completed (struct pager *p, +- mach_port_seqno_t seq, ++_pager_memory_object_supply_completed (struct pager *p, + mach_port_t ctl, + vm_offset_t off, + vm_size_t len, +-- +2.1.3 + diff --git a/debian/patches/0002-libpager-use-libports-notification-functions.patch b/debian/patches/0002-libpager-use-libports-notification-functions.patch new file mode 100644 index 00000000..d4079f25 --- /dev/null +++ b/debian/patches/0002-libpager-use-libports-notification-functions.patch @@ -0,0 +1,197 @@ +From aebac37fb5393836a401f9da76d917e65b08ac6c Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Sun, 7 Dec 2014 17:57:14 +0100 +Subject: [PATCH hurd 2/2] libpager: use libports notification functions + +Now that we do not use sequence numbers anymore, we can simply use +libports notification server functions. + +* libpager/Makefile (SRCS): Drop `no-senders.c', and `notify-stubs.c'. +(OBJS): Drop `notifyServer.o'. +* libpager/demuxer.c (pager_demuxer): Use libports server functions. +* libpager/mig-mutate.h: Drop all notification mutators. +* libpager/no-senders.c: Remove file. +* libpager/notify-stubs.c: Likewise. +--- + libpager/Makefile | 6 ++--- + libpager/demuxer.c | 4 ++-- + libpager/mig-mutate.h | 9 -------- + libpager/no-senders.c | 34 --------------------------- + libpager/notify-stubs.c | 61 ------------------------------------------------- + 5 files changed, 5 insertions(+), 109 deletions(-) + delete mode 100644 libpager/no-senders.c + delete mode 100644 libpager/notify-stubs.c + +diff --git a/libpager/Makefile b/libpager/Makefile +index 2bfd845..72b4bfd 100644 +--- a/libpager/Makefile ++++ b/libpager/Makefile +@@ -20,16 +20,16 @@ makemode := library + libname = libpager + SRCS = data-request.c data-return.c data-unlock.c pager-port.c \ + inhibit-term.c lock-completed.c lock-object.c mark-error.c \ +- no-senders.c object-init.c object-terminate.c pagemap.c \ ++ object-init.c object-terminate.c pagemap.c \ + pager-create.c pager-flush.c pager-shutdown.c pager-sync.c \ + stubs.c demuxer.c chg-compl.c pager-attr.c clean.c \ +- dropweak.c notify-stubs.c get-upi.c pager-memcpy.c pager-return.c \ ++ dropweak.c get-upi.c pager-memcpy.c pager-return.c \ + offer-page.c + installhdrs = pager.h + + HURDLIBS= ports + LDLIBS += -lpthread +-OBJS = $(SRCS:.c=.o) memory_objectServer.o notifyServer.o ++OBJS = $(SRCS:.c=.o) memory_objectServer.o + + MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h + MIGCOMSFLAGS = -prefix _pager_ +diff --git a/libpager/demuxer.c b/libpager/demuxer.c +index 57a6ccb..4dd3cd8 100644 +--- a/libpager/demuxer.c ++++ b/libpager/demuxer.c +@@ -22,7 +22,7 @@ + + #include "priv.h" + #include "memory_object_S.h" +-#include "notify_S.h" ++#include "libports/notify_S.h" + #include "queue.h" + + /* +@@ -89,7 +89,7 @@ pager_demuxer (struct requests *requests, + + mig_routine_t routine; + if (! ((routine = _pager_memory_object_server_routine (inp)) || +- (routine = _pager_notify_server_routine (inp)))) ++ (routine = ports_notify_server_routine (inp)))) + return FALSE; + + #define MASK (8u - 1u) +diff --git a/libpager/mig-mutate.h b/libpager/mig-mutate.h +index c4f30ce..66d37cd 100644 +--- a/libpager/mig-mutate.h ++++ b/libpager/mig-mutate.h +@@ -21,12 +21,3 @@ + #define MEMORY_OBJECT_INTRAN_PAYLOAD pager_t begin_using_pager_payload + #define MEMORY_OBJECT_DESTRUCTOR end_using_pager (pager_t) + #define MEMORY_OBJECT_IMPORTS import "mig-decls.h"; +- +-#define NOTIFY_INTRAN \ +- port_info_t begin_using_port_info_port (mach_port_t) +-#define NOTIFY_INTRAN_PAYLOAD \ +- port_info_t begin_using_port_info_payload +-#define NOTIFY_DESTRUCTOR \ +- end_using_port_info (port_info_t) +-#define NOTIFY_IMPORTS \ +- import "libports/mig-decls.h"; +diff --git a/libpager/no-senders.c b/libpager/no-senders.c +deleted file mode 100644 +index b750101..0000000 +--- a/libpager/no-senders.c ++++ /dev/null +@@ -1,34 +0,0 @@ +-/* Called when a nosenders notification happens +- Copyright (C) 1994, 1995 Free Software Foundation +- +- This program is free software; you can redistribute it and/or +- modify it under the terms of the GNU General Public License as +- published by the Free Software Foundation; either version 2, or (at +- your option) any later version. +- +- This program 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 +- General Public License for more details. +- +- You should have received a copy of the GNU General Public License +- along with this program; if not, write to the Free Software +- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +- +- +-#include "priv.h" +-#include <mach/notify.h> +-#include "notify_S.h" +- +-error_t +-_pager_do_mach_notify_no_senders (struct port_info *pi, +- mach_port_mscount_t mscount) +-{ +- if (!pi || +- pi->class != _pager_class) +- return EOPNOTSUPP; +- +- ports_no_senders (pi, mscount); +- +- return 0; +-} +diff --git a/libpager/notify-stubs.c b/libpager/notify-stubs.c +deleted file mode 100644 +index 6440815..0000000 +--- a/libpager/notify-stubs.c ++++ /dev/null +@@ -1,61 +0,0 @@ +-/* +- Copyright (C) 1995, 2011 Free Software Foundation, Inc. +- Written by Michael I. Bushnell. +- +- This file is part of the GNU Hurd. +- +- The GNU Hurd is free software; you can redistribute it and/or +- modify it under the terms of the GNU General Public License as +- published by the Free Software Foundation; either version 2, or (at +- your option) any later version. +- +- The GNU Hurd 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 +- General Public License for more details. +- +- You should have received a copy of the GNU General Public License +- along with this program; if not, write to the Free Software +- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ +- +-#include "priv.h" +-#include "notify_S.h" +-#include <errno.h> +- +-error_t +-_pager_do_mach_notify_port_deleted (struct port_info *pi, +- mach_port_t name +- __attribute__ ((unused))) +-{ +- return 0; +-} +- +-error_t +-_pager_do_mach_notify_msg_accepted (struct port_info *pi, +- mach_port_t name +- __attribute__ ((unused))) +-{ +- return 0; +-} +- +-error_t +-_pager_do_mach_notify_port_destroyed (struct port_info *pi, +- mach_port_t name +- __attribute__ ((unused))) +-{ +- return 0; +-} +- +-error_t +-_pager_do_mach_notify_send_once (struct port_info *pi) +-{ +- return 0; +-} +- +-error_t +-_pager_do_mach_notify_dead_name (struct port_info *pi, +- mach_port_t name +- __attribute__ ((unused))) +-{ +- return 0; +-} +-- +2.1.3 + diff --git a/debian/patches/series b/debian/patches/series index 0ff988ad..ecb287f8 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -43,3 +43,5 @@ xkb-compat.patch startup-avoid-broken-puts.patch pfinet_dhcp.patch +0001-libpager-remove-the-seqno-parameters.patch +0002-libpager-use-libports-notification-functions.patch |