proc->thread stage 4: rework the VFS and DEVICE subsystems to take thread
[dragonfly.git] / sys / emulation / linux / linux_util.h
index 594d1aa..a3c2ef7 100644 (file)
@@ -29,7 +29,7 @@
  * from: svr4_util.h,v 1.5 1994/11/18 02:54:31 christos Exp
  * from: linux_util.h,v 1.2 1995/03/05 23:23:50 fvdl Exp
  * $FreeBSD: src/sys/compat/linux/linux_util.h,v 1.12.2.2 2000/11/02 23:31:28 obrien Exp $
- * $DragonFly: src/sys/emulation/linux/linux_util.h,v 1.3 2003/06/23 17:55:27 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_util.h,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 /*
 static __inline caddr_t stackgap_init(void);
 static __inline void *stackgap_alloc(caddr_t *, size_t);
 
-#define szsigcode (*(curproc->p_sysent->sv_szsigcode))
+#define szsigcode(p) (*((p)->p_sysent->sv_szsigcode))
 
 static __inline caddr_t
 stackgap_init()
 {
-       return (caddr_t)(PS_STRINGS - szsigcode - SPARE_USRSPACE);
+       return (caddr_t)(PS_STRINGS - szsigcode(curproc) - SPARE_USRSPACE);
 }
 
 static __inline void *
@@ -69,7 +69,7 @@ stackgap_alloc(sgp, sz)
        void *p = (void *) *sgp;
 
        sz = ALIGN(sz);
-       if (*sgp + sz > (caddr_t)(PS_STRINGS - szsigcode))
+       if (*sgp + sz > (caddr_t)(PS_STRINGS - szsigcode(curproc)))
                return NULL;
        *sgp += sz;
        return p;
@@ -77,13 +77,13 @@ stackgap_alloc(sgp, sz)
 
 extern const char linux_emul_path[];
 
-int linux_emul_find __P((struct proc *, caddr_t *, const char *, char *, char **, int));
+int linux_emul_find __P((struct thread *, caddr_t *, const char *, char *, char **, int));
 
 #define CHECKALT(sgp, path, i)                                                 \
        do {                                                            \
                int _error;                                             \
                                                                        \
-               _error = linux_emul_find(curproc, sgp, linux_emul_path, path,   \
+               _error = linux_emul_find(curthread, sgp, linux_emul_path, path, \
                    &path, i);                                          \
                if (_error == EFAULT)                                   \
                        return (_error);                                \
@@ -103,9 +103,18 @@ struct __hack
 static __inline int
 unsupported_msg(const char *fname)
 {
-       struct proc *p = curproc;
-       printf("linux: syscall %s is obsoleted or not implemented (pid=%ld)\n",
-           fname, (long)p->p_pid);
+       struct thread *td = curthread;
+       if (td->td_proc) {
+           printf(
+               "linux: syscall %s is obsoleted or not implemented (pid=%d)\n",
+               fname, (int)td->td_proc->p_pid
+           );
+       } else {
+           printf(
+               "linux: syscall %s is obsoleted or not implemented (td=%p)\n",
+               fname, td
+           );
+       }
        return (ENOSYS);
 }