p4-projects@freebsd.org
[Top] [All Lists]

PERFORCE change 109788 for review

Subject: PERFORCE change 109788 for review
From: Roman Divacky
Date: Sun, 12 Nov 2006 12:16:40 GMT
http://perforce.freebsd.org/chv.cgi?CH=109788

Change 109788 by rdivacky@rdivacky_witten on 2006/11/12 12:16:38

        Implement linux_chroot as a wrapper to chroot. We need this to get
        errno translation. All syscalls that are directly mapped to FreeBSD
        syscalls suffer from this.
        
        Notice: this is untested (not even compilation) because -current
        is broken ATM :(

Affected files ...

.. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_proto.h#12 edit
.. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_syscall.h#12 edit
.. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_sysent.c#11 edit
.. //depot/projects/linuxolator/src/sys/amd64/linux32/syscalls.master#11 edit
.. //depot/projects/linuxolator/src/sys/compat/linux/linux_misc.c#32 edit
.. //depot/projects/linuxolator/src/sys/i386/linux/linux_proto.h#12 edit
.. //depot/projects/linuxolator/src/sys/i386/linux/linux_syscall.h#11 edit
.. //depot/projects/linuxolator/src/sys/i386/linux/linux_sysent.c#11 edit
.. //depot/projects/linuxolator/src/sys/i386/linux/syscalls.master#10 edit

Differences ...

==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_proto.h#12 
(text+ko) ====

@@ -2,8 +2,8 @@
  * System call prototypes.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/amd64/linux32/linux32_proto.h,v 1.26 2006/11/11 21:49:07 
ru Exp $
- * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.23 
2006/10/29 14:02:38 netchild Exp 
+ * $FreeBSD$
+ * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.22 
2006/10/28 10:59:59 netchild Exp 
  */
 
 #ifndef _LINUX_SYSPROTO_H_
@@ -192,6 +192,9 @@
 struct linux_olduname_args {
        register_t dummy;
 };
+struct linux_chroot_args {
+       char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+};
 struct linux_ustat_args {
        char dev_l_[PADL_(l_dev_t)]; l_dev_t dev; char dev_r_[PADR_(l_dev_t)];
        char ubuf_l_[PADL_(struct l_ustat *)]; struct l_ustat * ubuf; char 
ubuf_r_[PADR_(struct l_ustat *)];
@@ -984,6 +987,7 @@
 int    linux_ioctl(struct thread *, struct linux_ioctl_args *);
 int    linux_fcntl(struct thread *, struct linux_fcntl_args *);
 int    linux_olduname(struct thread *, struct linux_olduname_args *);
+int    linux_chroot(struct thread *, struct linux_chroot_args *);
 int    linux_ustat(struct thread *, struct linux_ustat_args *);
 int    linux_getppid(struct thread *, struct linux_getppid_args *);
 int    linux_sigaction(struct thread *, struct linux_sigaction_args *);
@@ -1235,6 +1239,7 @@
 #define        LINUX_SYS_AUE_linux_ioctl       AUE_IOCTL
 #define        LINUX_SYS_AUE_linux_fcntl       AUE_FCNTL
 #define        LINUX_SYS_AUE_linux_olduname    AUE_NULL
+#define        LINUX_SYS_AUE_linux_chroot      AUE_CHROOT
 #define        LINUX_SYS_AUE_linux_ustat       AUE_NULL
 #define        LINUX_SYS_AUE_linux_getppid     AUE_GETPPID
 #define        LINUX_SYS_AUE_linux_sigaction   AUE_NULL

==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_syscall.h#12 
(text+ko) ====

@@ -2,8 +2,8 @@
  * System call numbers.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/amd64/linux32/linux32_syscall.h,v 1.26 2006/11/11 
21:49:07 ru Exp $
- * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.23 
2006/10/29 14:02:38 netchild Exp 
+ * $FreeBSD$
+ * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.22 
2006/10/28 10:59:59 netchild Exp 
  */
 
 #define        LINUX_SYS_exit  1
@@ -57,7 +57,7 @@
 #define        LINUX_SYS_setpgid       57
 #define        LINUX_SYS_linux_olduname        59
 #define        LINUX_SYS_umask 60
-#define        LINUX_SYS_chroot        61
+#define        LINUX_SYS_linux_chroot  61
 #define        LINUX_SYS_linux_ustat   62
 #define        LINUX_SYS_dup2  63
 #define        LINUX_SYS_linux_getppid 64

==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_sysent.c#11 
(text+ko) ====

@@ -2,8 +2,8 @@
  * System call switch table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/amd64/linux32/linux32_sysent.c,v 1.26 2006/11/11 21:49:07 
ru Exp $
- * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.23 
2006/10/29 14:02:38 netchild Exp 
+ * $FreeBSD$
+ * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.22 
2006/10/28 10:59:59 netchild Exp 
  */
 
 #include <bsm/audit_kevents.h>
@@ -81,7 +81,7 @@
        { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },                        
/* 58 = ulimit */
        { 0, (sy_call_t *)linux_olduname, AUE_NULL, NULL, 0, 0 },       /* 59 = 
linux_olduname */
        { AS(umask_args), (sy_call_t *)umask, AUE_UMASK, NULL, 0, 0 },  /* 60 = 
umask */
-       { AS(chroot_args), (sy_call_t *)chroot, AUE_CHROOT, NULL, 0, 0 },       
/* 61 = chroot */
+       { AS(linux_chroot_args), (sy_call_t *)linux_chroot, AUE_CHROOT, NULL, 
0, 0 },   /* 61 = linux_chroot */
        { AS(linux_ustat_args), (sy_call_t *)linux_ustat, AUE_NULL, NULL, 0, 0 
},       /* 62 = linux_ustat */
        { AS(dup2_args), (sy_call_t *)dup2, AUE_DUP2, NULL, 0, 0 },     /* 63 = 
dup2 */
        { 0, (sy_call_t *)linux_getppid, AUE_GETPPID, NULL, 0, 0 },     /* 64 = 
linux_getppid */

==== //depot/projects/linuxolator/src/sys/amd64/linux32/syscalls.master#11 
(text+ko) ====

@@ -117,7 +117,7 @@
 58     AUE_NULL        UNIMPL  ulimit
 59     AUE_NULL        STD     { int linux_olduname(void); }
 60     AUE_UMASK       NOPROTO { int umask(int newmask); }
-61     AUE_CHROOT      NOPROTO { int chroot(char *path); }
+61     AUE_CHROOT      STD     { int linux_chroot(char *path); }
 62     AUE_NULL        STD     { int linux_ustat(l_dev_t dev, \
                                    struct l_ustat *ubuf); }
 63     AUE_DUP2        NOPROTO { int dup2(u_int from, u_int to); }

==== //depot/projects/linuxolator/src/sys/compat/linux/linux_misc.c#32 
(text+ko) ====

@@ -1672,3 +1672,9 @@
 
        return (error);
 }
+
+int
+linux_chroot(struct thread *td, struct linux_chroot_args *args)
+{
+       return (chroot(td, args));
+}

==== //depot/projects/linuxolator/src/sys/i386/linux/linux_proto.h#12 (text+ko) 
====

@@ -2,8 +2,8 @@
  * System call prototypes.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/i386/linux/linux_proto.h,v 1.87 2006/11/11 16:26:56 
trhodes Exp $
- * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.83 2006/10/29 
14:02:39 netchild Exp 
+ * $FreeBSD$
+ * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.82 2006/10/28 
10:59:59 netchild Exp 
  */
 
 #ifndef _LINUX_SYSPROTO_H_
@@ -196,6 +196,9 @@
 struct linux_olduname_args {
        register_t dummy;
 };
+struct linux_chroot_args {
+       char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+};
 struct linux_ustat_args {
        char dev_l_[PADL_(l_dev_t)]; l_dev_t dev; char dev_r_[PADR_(l_dev_t)];
        char ubuf_l_[PADL_(struct l_ustat *)]; struct l_ustat * ubuf; char 
ubuf_r_[PADR_(struct l_ustat *)];
@@ -1002,6 +1005,7 @@
 int    linux_ioctl(struct thread *, struct linux_ioctl_args *);
 int    linux_fcntl(struct thread *, struct linux_fcntl_args *);
 int    linux_olduname(struct thread *, struct linux_olduname_args *);
+int    linux_chroot(struct thread *, struct linux_chroot_args *);
 int    linux_ustat(struct thread *, struct linux_ustat_args *);
 int    linux_getppid(struct thread *, struct linux_getppid_args *);
 int    linux_sigaction(struct thread *, struct linux_sigaction_args *);
@@ -1254,6 +1258,7 @@
 #define        LINUX_SYS_AUE_linux_ioctl       AUE_IOCTL
 #define        LINUX_SYS_AUE_linux_fcntl       AUE_FCNTL
 #define        LINUX_SYS_AUE_linux_olduname    AUE_NULL
+#define        LINUX_SYS_AUE_linux_chroot      AUE_CHROOT
 #define        LINUX_SYS_AUE_linux_ustat       AUE_NULL
 #define        LINUX_SYS_AUE_linux_getppid     AUE_GETPPID
 #define        LINUX_SYS_AUE_linux_sigaction   AUE_NULL

==== //depot/projects/linuxolator/src/sys/i386/linux/linux_syscall.h#11 
(text+ko) ====

@@ -58,7 +58,7 @@
 #define        LINUX_SYS_setpgid       57
 #define        LINUX_SYS_linux_olduname        59
 #define        LINUX_SYS_umask 60
-#define        LINUX_SYS_chroot        61
+#define        LINUX_SYS_linux_chroot  61
 #define        LINUX_SYS_linux_ustat   62
 #define        LINUX_SYS_dup2  63
 #define        LINUX_SYS_linux_getppid 64

==== //depot/projects/linuxolator/src/sys/i386/linux/linux_sysent.c#11 
(text+ko) ====

@@ -80,7 +80,7 @@
        { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },                        
/* 58 = ulimit */
        { 0, (sy_call_t *)linux_olduname, AUE_NULL, NULL, 0, 0 },       /* 59 = 
linux_olduname */
        { AS(umask_args), (sy_call_t *)umask, AUE_UMASK, NULL, 0, 0 },  /* 60 = 
umask */
-       { AS(chroot_args), (sy_call_t *)chroot, AUE_CHROOT, NULL, 0, 0 },       
/* 61 = chroot */
+       { AS(linux_chroot_args), (sy_call_t *)linux_chroot, AUE_CHROOT, NULL, 
0, 0 },   /* 61 = linux_chroot */
        { AS(linux_ustat_args), (sy_call_t *)linux_ustat, AUE_NULL, NULL, 0, 0 
},       /* 62 = linux_ustat */
        { AS(dup2_args), (sy_call_t *)dup2, AUE_DUP2, NULL, 0, 0 },     /* 63 = 
dup2 */
        { 0, (sy_call_t *)linux_getppid, AUE_GETPPID, NULL, 0, 0 },     /* 64 = 
linux_getppid */

==== //depot/projects/linuxolator/src/sys/i386/linux/syscalls.master#10 
(text+ko) ====

@@ -117,7 +117,7 @@
 58     AUE_NULL        UNIMPL  ulimit
 59     AUE_NULL        STD     { int linux_olduname(void); }
 60     AUE_UMASK       NOPROTO { int umask(int newmask); }
-61     AUE_CHROOT      NOPROTO { int chroot(char *path); }
+61     AUE_CHROOT      STD     { int linux_chroot(char *path); }
 62     AUE_NULL        STD     { int linux_ustat(l_dev_t dev, \
                                    struct l_ustat *ubuf); }
 63     AUE_DUP2        NOPROTO { int dup2(u_int from, u_int to); }
_______________________________________________
p4-projects@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/p4-projects
To unsubscribe, send any mail to "p4-projects-unsubscribe@xxxxxxxxxxx"

<Prev in Thread] Current Thread [Next in Thread>