* [PATCH 0/4] user-cr: powerpc support etc
@ 2009-09-16 9:27 Nathan Lynch
[not found] ` <1253093271-16357-1-git-send-email-ntl-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: Nathan Lynch @ 2009-09-16 9:27 UTC (permalink / raw)
To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
Patch 1 is an obvious fix, I think.
The rest is an assortment of hacks I've employed to get this building
and working on powerpc.
Nathan Lynch (4):
fix rename fallout
restart: (build fix hack) define sa_family_t and struct linger
mktree: initial powerpc support hacks
makefile hack for powerpc
Makefile | 5 +++-
clone_ppc32.S | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
powerpc_asm.h | 46 +++++++++++++++++++++++++++++++++
restart.c | 31 ++++++++++++++++++++++
4 files changed, 160 insertions(+), 1 deletions(-)
create mode 100644 clone_ppc32.S
create mode 100644 powerpc_asm.h
^ permalink raw reply [flat|nested] 6+ messages in thread[parent not found: <1253093271-16357-1-git-send-email-ntl-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>]
* [PATCH 1/4] fix rename fallout [not found] ` <1253093271-16357-1-git-send-email-ntl-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> @ 2009-09-16 9:27 ` Nathan Lynch 2009-09-16 9:27 ` [PATCH 2/4] restart: (build fix hack) define sa_family_t and struct linger Nathan Lynch ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Nathan Lynch @ 2009-09-16 9:27 UTC (permalink / raw) To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg mktree was renamed to restart; update Makefile accordingly. Signed-off-by: Nathan Lynch <ntl-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> --- Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index 497648e..8cd0c2d 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ all: $(PROGS) ckptinfo: ckptinfo_types.o -mktree: CFLAGS += -D__REENTRANT -pthread +restart: CFLAGS += -D__REENTRANT -pthread ckptinfo_types.o: ckptinfo_types.c @echo $(CC) -c $(CFLAGS) $< -- 1.6.0.6 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/4] restart: (build fix hack) define sa_family_t and struct linger [not found] ` <1253093271-16357-1-git-send-email-ntl-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> 2009-09-16 9:27 ` [PATCH 1/4] fix rename fallout Nathan Lynch @ 2009-09-16 9:27 ` Nathan Lynch 2009-09-16 9:27 ` [PATCH 3/4] mktree: initial powerpc support hacks Nathan Lynch ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Nathan Lynch @ 2009-09-16 9:27 UTC (permalink / raw) To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg restart.c doesn't build against exported kernel headers: $ make CPPFLAGS=-I$PWD/../linux-2.6.git/usr/include cc -g -Wall -Wstrict-prototypes -Wno-trigraphs -I../linux/include -I../linux/arch//include -DCHECKPOINT_DEBUG -D__REENTRANT -pthread -I/home/nathanl/devel/user-cr.git/../linux-2.6.git/usr/include restart.c clone_ppc32.o -o restart In file included from /home/nathanl/devel/user-cr.git/../linux-2.6.git/usr/include/linux/checkpoint_hdr.h:16, from restart.c:42: /home/nathanl/devel/user-cr.git/../linux-2.6.git/usr/include/linux/un.h:7: error: expected specifier-qualifier-list before ‘sa_family_t’ In file included from restart.c:42: /home/nathanl/devel/user-cr.git/../linux-2.6.git/usr/include/linux/checkpoint_hdr.h:407: error: field ‘linger’ has incomplete type make: *** [restart] Error 1 I am not sure what the right fix is. This is not it. --- restart.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/restart.c b/restart.c index 2d8d796..b93a2e1 100644 --- a/restart.c +++ b/restart.c @@ -10,6 +10,13 @@ #define _GNU_SOURCE +/* Hacks ahoy */ +typedef unsigned short sa_family_t; +struct linger { + int l_onoff; /* Linger active */ + int l_linger; /* How long to linger for */ +}; + #include <stdio.h> #include <stdlib.h> #include <string.h> -- 1.6.0.6 _______________________________________________ Containers mailing list Containers@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/containers ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/4] mktree: initial powerpc support hacks [not found] ` <1253093271-16357-1-git-send-email-ntl-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> 2009-09-16 9:27 ` [PATCH 1/4] fix rename fallout Nathan Lynch 2009-09-16 9:27 ` [PATCH 2/4] restart: (build fix hack) define sa_family_t and struct linger Nathan Lynch @ 2009-09-16 9:27 ` Nathan Lynch 2009-09-16 9:27 ` [PATCH 4/4] makefile hack for powerpc Nathan Lynch 2009-09-16 18:05 ` [PATCH 0/4] user-cr: powerpc support etc Oren Laadan 4 siblings, 0 replies; 6+ messages in thread From: Nathan Lynch @ 2009-09-16 9:27 UTC (permalink / raw) To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg --- clone_ppc32.S | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ powerpc_asm.h | 46 +++++++++++++++++++++++++++++++++ restart.c | 24 +++++++++++++++++ 3 files changed, 149 insertions(+), 0 deletions(-) create mode 100644 clone_ppc32.S create mode 100644 powerpc_asm.h diff --git a/clone_ppc32.S b/clone_ppc32.S new file mode 100644 index 0000000..e159b19 --- /dev/null +++ b/clone_ppc32.S @@ -0,0 +1,79 @@ +#include <asm/unistd.h> +#include "powerpc_asm.h" + +/* int [r3] clone_with_pids(int (*fn)(void *arg) [r3], + * void *child_stack [r4], + * int flags [r5], + * void *arg [r6], + * void *parent_tid [r7], + * void *tls [r8], + * void *child_tid [r9], + * struct target_pid_set *setp [r10]); + * Creates a child task with the pids specified by setp. + * Returns to parent only, child execution and exit is handled here. + * On error, returns negated errno. On success, returns the pid of the child + * created. + */ + + .text + .globl __clone_with_pids +__clone_with_pids: + + /* No argument validation. */ + + /* Set up parent's stack frame. */ + stwu r1,-32(r1) + + /* Save non-volatiles (r28-r31) which we plan to use. */ + stmw r28,16(r1) + + /* Set up child's stack frame. */ + clrrwi r4,r4,4 + li r0,0 + stw r0,-16(r4) + + /* Save fn, stack pointer, flags, and arg across system call. */ + mr r28,r3 + mr r29,r4 + mr r30,r5 + mr r31,r6 + + /* Set up arguments for system call. Stack pointer is already in r4. */ + mr r3,r5 /* flags */ + mr r5,r7 /* parent_tid */ + mr r6,r8 /* tls */ + mr r7,r9 /* child_tid */ + mr r8,r10 /* setp */ + + /* Do the system call */ + li r0,__NR_clone_with_pids + sc + + /* Parent or child? */ + cmpwi cr1,r3,0 + crandc 4*cr1+eq,4*cr1+eq,4*cr0+so + bne cr1,parent + + /* Child. Call fn. */ + mtctr r28 + mr r3,r31 + bctrl + + /* Assume result of fn in r3 and exit. */ + li r0,__NR_exit + sc + +parent: + /* Restore non-volatiles. */ + lmw r28,16(r1) + + addi r1,r1,32 + + /* Return to caller on success. */ + bnslr + + /* Handle error. Negate the return value to signal an error + * to the caller, which must set errno. + */ + neg r3,r3 + blr diff --git a/powerpc_asm.h b/powerpc_asm.h new file mode 100644 index 0000000..58f459f --- /dev/null +++ b/powerpc_asm.h @@ -0,0 +1,46 @@ +#ifndef __POWERPC_ASM_H +#define _POWERPC_ASM_H + +#define r0 0 +#define r1 1 +#define r2 2 +#define r3 3 +#define r4 4 +#define r5 5 +#define r6 6 +#define r7 7 +#define r8 8 +#define r9 9 +#define r10 10 +#define r11 11 +#define r12 12 +#define r13 13 +#define r14 14 +#define r15 15 +#define r16 16 +#define r17 17 +#define r18 18 +#define r19 19 +#define r20 20 +#define r21 21 +#define r22 22 +#define r23 23 +#define r24 24 +#define r25 25 +#define r26 26 +#define r27 27 +#define r28 28 +#define r29 29 +#define r30 30 +#define r31 31 + +#define cr0 0 +#define cr1 1 +#define cr2 2 +#define cr3 3 +#define cr4 4 +#define cr5 5 +#define cr6 6 +#define cr7 7 + +#endif /* _POWERPC_ASM_H */ diff --git a/restart.c b/restart.c index b93a2e1..499614e 100644 --- a/restart.c +++ b/restart.c @@ -1951,6 +1951,30 @@ int clone_with_pids(int (*fn)(void *), void *child_stack, int flags, return retval; } +#elif defined(__powerpc__) && defined(__NR_clone_with_pids) + +extern int __clone_with_pids(int (*fn)(void *arg), void *child_stack, int flags, + void *arg, void *parent_tid, void *tls, + void *child_tid, struct target_pid_set *setp); + +static int clone_with_pids(int (*fn)(void *), void *child_stack, int flags, + struct target_pid_set *target_pids, void *arg) +{ + void *parent_tid = NULL; + void *tls = NULL; + void *child_tid = NULL; + pid_t newpid; + + newpid = __clone_with_pids(fn, child_stack, flags, arg, parent_tid, + tls, child_tid, target_pids); + + if (newpid < 0) { + errno = -newpid; + return -1; + } + + return newpid; +} #else /* !defined(__NR_clone_with_pids) */ /* on other architectures fallback to regular clone(2) */ -- 1.6.0.6 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] makefile hack for powerpc [not found] ` <1253093271-16357-1-git-send-email-ntl-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> ` (2 preceding siblings ...) 2009-09-16 9:27 ` [PATCH 3/4] mktree: initial powerpc support hacks Nathan Lynch @ 2009-09-16 9:27 ` Nathan Lynch 2009-09-16 18:05 ` [PATCH 0/4] user-cr: powerpc support etc Oren Laadan 4 siblings, 0 replies; 6+ messages in thread From: Nathan Lynch @ 2009-09-16 9:27 UTC (permalink / raw) To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg Add an explict restart target which links clone_ppc32.o into the restart executable. Ideas on how to handle this in a mergeable form are welcome. --- Makefile | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/Makefile b/Makefile index 8cd0c2d..10c068c 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,9 @@ all: $(PROGS) ckptinfo: ckptinfo_types.o restart: CFLAGS += -D__REENTRANT -pthread +# powerpc hack +restart: restart.c clone_ppc32.o + $(CC) $(CFLAGS) $(CPPFLAGS) $^ -o $@ ckptinfo_types.o: ckptinfo_types.c @echo $(CC) -c $(CFLAGS) $< -- 1.6.0.6 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] user-cr: powerpc support etc [not found] ` <1253093271-16357-1-git-send-email-ntl-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org> ` (3 preceding siblings ...) 2009-09-16 9:27 ` [PATCH 4/4] makefile hack for powerpc Nathan Lynch @ 2009-09-16 18:05 ` Oren Laadan 4 siblings, 0 replies; 6+ messages in thread From: Oren Laadan @ 2009-09-16 18:05 UTC (permalink / raw) To: Nathan Lynch; +Cc: containers-qjLDD68F18O7TbgM5vRIOg got them .. thanks. Nathan Lynch wrote: > Patch 1 is an obvious fix, I think. > > The rest is an assortment of hacks I've employed to get this building > and working on powerpc. > > Nathan Lynch (4): > fix rename fallout > restart: (build fix hack) define sa_family_t and struct linger > mktree: initial powerpc support hacks > makefile hack for powerpc > > Makefile | 5 +++- > clone_ppc32.S | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > powerpc_asm.h | 46 +++++++++++++++++++++++++++++++++ > restart.c | 31 ++++++++++++++++++++++ > 4 files changed, 160 insertions(+), 1 deletions(-) > create mode 100644 clone_ppc32.S > create mode 100644 powerpc_asm.h > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-09-16 18:05 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-16 9:27 [PATCH 0/4] user-cr: powerpc support etc Nathan Lynch
[not found] ` <1253093271-16357-1-git-send-email-ntl-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2009-09-16 9:27 ` [PATCH 1/4] fix rename fallout Nathan Lynch
2009-09-16 9:27 ` [PATCH 2/4] restart: (build fix hack) define sa_family_t and struct linger Nathan Lynch
2009-09-16 9:27 ` [PATCH 3/4] mktree: initial powerpc support hacks Nathan Lynch
2009-09-16 9:27 ` [PATCH 4/4] makefile hack for powerpc Nathan Lynch
2009-09-16 18:05 ` [PATCH 0/4] user-cr: powerpc support etc Oren Laadan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox