]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/sys/ktrace.h
xnu-792.6.22.tar.gz
[apple/xnu.git] / bsd / sys / ktrace.h
index c10ea539b0e76ee3dace09ab8e5847c4b5ee08e0..f07a9a8d11847d5f2c753de4f93d7870b0b9ddf5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
  * SUCH DAMAGE.
  *
  *     @(#)ktrace.h    8.1 (Berkeley) 6/2/93
+ * $FreeBSD: src/sys/sys/ktrace.h,v 1.19.2.3 2001/01/06 09:58:23 alfred Exp $
  */
 
 #ifndef _SYS_KTRACE_H_
 #define        _SYS_KTRACE_H_
 
+#include <sys/appleapiopts.h>
+
+#ifdef MACH_KERNEL_PRIVATE
+
+void ktrsyscall(void *, int, int, u_int64_t *, int);
+void ktrsysret(void *, int, int, int, int);
+
+#else
+#ifdef __APPLE_API_UNSTABLE
 /*
  * operations to ktrace system call  (KTROP(op))
  */
@@ -72,6 +82,8 @@
 
 /*
  * ktrace record header
+ *
+ * LP64todo: not 64-bit safe
  */
 struct ktr_header {
        int     ktr_len;                /* length of buf */
@@ -97,11 +109,12 @@ struct ktr_header {
  */
 #define KTR_SYSCALL    1
 struct ktr_syscall {
-       int     ktr_code;               /* syscall number */
-       int     ktr_argsize;            /* size of arguments */
+       short   ktr_code;               /* syscall number */
+       short   ktr_narg;               /* number of arguments */
        /*
-        * followed by ktr_argsize/sizeof(register_t) "register_t"s
+        * followed by ktr_narg register_t
         */
+       u_int64_t       ktr_args[1];
 };
 
 /*
@@ -112,7 +125,7 @@ struct ktr_sysret {
        short   ktr_code;
        short   ktr_eosys;
        int     ktr_error;
-       int     ktr_retval;
+       register_t      ktr_retval;
 };
 
 /*
@@ -140,8 +153,8 @@ struct ktr_genio {
 struct ktr_psig {
        int     signo;
        sig_t   action;
-       int     mask;
        int     code;
+       sigset_t mask;
 };
 
 /*
@@ -153,6 +166,12 @@ struct ktr_csw {
        int     user;   /* 1 if usermode (ivcsw), 0 if kernel (vcsw) */
 };
 
+/*
+ * KTR_USER - data comming from userland
+ */
+#define        KTR_USER_MAXLEN 2048    /* maximum length of passed data */
+#define KTR_USER       7
+
 /*
  * kernel trace points (in p_traceflag)
  */
@@ -163,6 +182,7 @@ struct ktr_csw {
 #define KTRFAC_GENIO   (1<<KTR_GENIO)
 #define        KTRFAC_PSIG     (1<<KTR_PSIG)
 #define KTRFAC_CSW     (1<<KTR_CSW)
+#define KTRFAC_USER    (1<<KTR_USER)
 /*
  * trace flags (also in p_traceflags)
  */
@@ -170,14 +190,28 @@ struct ktr_csw {
 #define KTRFAC_INHERIT 0x40000000      /* pass trace flags to children */
 #define KTRFAC_ACTIVE  0x20000000      /* ktrace logging in progress, ignore */
 
-#ifndef        KERNEL
+
+#ifdef KERNEL
+#ifdef __APPLE_API_PRIVATE
+void   ktrnamei(struct vnode *,char *);
+void   ktrcsw(struct vnode *, int, int);
+void   ktrpsig(struct vnode *, int, sig_t, sigset_t *, int);
+void   ktrgenio(struct vnode *, int, enum uio_rw, struct uio *, int);
+void   ktrsyscall(struct proc *, int, int, u_int64_t args[]);
+void   ktrsysret(struct proc *, int, int, register_t);
+#endif /* __APPLE_API_PRIVATE */
+#else
 
 #include <sys/cdefs.h>
 
 __BEGIN_DECLS
-int    ktrace __P((const char *, int, int, pid_t));
+int    ktrace(const char *, int, int, pid_t);
+int    utrace(const void *, size_t);
 __END_DECLS
 
 #endif /* !KERNEL */
+
+#endif /* __APPLE_API_UNSTABLE */
+#endif /* !MACH_KERNEL_PRIVATE */
 #endif /* !_SYS_KTRACE_H_ */