diff options
Diffstat (limited to 'debian')
-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 | 179 | ||||
-rw-r--r-- | debian/patches/series | 2 |
3 files changed, 511 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..b6e811d9 --- /dev/null +++ b/debian/patches/0002-libpager-use-libports-notification-functions.patch @@ -0,0 +1,179 @@ +From 768fde4e27179169644235fde96c91b365e3294c 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 (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/stubs.c: Likewise. +--- + libpager/Makefile | 2 +- + libpager/demuxer.c | 4 ++-- + libpager/mig-mutate.h | 9 --------- + libpager/no-senders.c | 34 ------------------------------- + libpager/stubs.c | 55 --------------------------------------------------- + 5 files changed, 3 insertions(+), 101 deletions(-) + delete mode 100644 libpager/no-senders.c + delete mode 100644 libpager/stubs.c + +diff --git a/libpager/Makefile b/libpager/Makefile +index 2bfd845..230cd7d 100644 +--- a/libpager/Makefile ++++ b/libpager/Makefile +@@ -29,7 +29,7 @@ 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/stubs.c b/libpager/stubs.c +deleted file mode 100644 +index 06ad118..0000000 +--- a/libpager/stubs.c ++++ /dev/null +@@ -1,55 +0,0 @@ +- /* Unused memory object interface stubs +- Copyright (C) 1994, 2011 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 "memory_object_S.h" +-#include <stdio.h> +- +-kern_return_t +-_pager_memory_object_copy (struct pager *p, +- memory_object_control_t obj_ctl, +- vm_offset_t off, +- vm_size_t len, +- mach_port_t new) +-{ +- printf ("m_o_copy called\n"); +- return EOPNOTSUPP; +-} +- +-kern_return_t +-_pager_memory_object_data_write (struct pager *p, +- mach_port_t ctl, +- vm_offset_t off, +- pointer_t data, +- vm_size_t data_cnt) +-{ +- printf ("m_o_data_write called\n"); +- return EOPNOTSUPP; +-} +- +-kern_return_t +-_pager_memory_object_supply_completed (struct pager *p, +- mach_port_t ctl, +- vm_offset_t off, +- vm_size_t len, +- kern_return_t result, +- vm_offset_t err_off) +-{ +- printf ("m_o_supply_completed called\n"); +- return EOPNOTSUPP; +-} +-- +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 |