]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/sys/fbt.h
xnu-7195.50.7.100.1.tar.gz
[apple/xnu.git] / bsd / sys / fbt.h
index 8121ebbbe6105340bceee1fb83402634782524b6..88b365d793daf29c13a61c5c794e4e8063de1078 100644 (file)
 #ifndef _FBT_H
 #define _FBT_H
 
 #ifndef _FBT_H
 #define _FBT_H
 
-#if defined (__ppc__) || defined (__ppc64__)
-typedef uint32_t machine_inst_t;
-#elif defined(__i386__) || defined (__x86_64__)
+#if defined (__x86_64__)
 typedef uint8_t machine_inst_t;
 #elif defined(__arm__)
 typedef uint8_t machine_inst_t;
 #elif defined(__arm__)
-typedef uint32_t machine_inst_t; /* XXX is this correct? Thumb? */
+typedef uint16_t machine_inst_t;
+#elif defined(__arm64__)
+typedef uint32_t machine_inst_t;
 #else
 #error Unknown Architecture
 #endif
 #else
 #error Unknown Architecture
 #endif
@@ -47,18 +47,28 @@ typedef struct fbt_probe {
        int8_t                  fbtp_rval;
        machine_inst_t  fbtp_patchval;
        machine_inst_t  fbtp_savedval;
        int8_t                  fbtp_rval;
        machine_inst_t  fbtp_patchval;
        machine_inst_t  fbtp_savedval;
+        machine_inst_t  fbtp_currentval;
        uintptr_t               fbtp_roffset;
        dtrace_id_t             fbtp_id;
        uintptr_t               fbtp_roffset;
        dtrace_id_t             fbtp_id;
+       /* FIXME!
+        * This field appears to only be used in error messages.
+        * It puts this structure into the next size bucket in kmem_alloc
+        * wasting 32 bytes per probe. (in i386 only)
+        */
        char                    fbtp_name[MAX_FBTP_NAME_CHARS];
        struct modctl   *fbtp_ctl;
        int             fbtp_loadcnt;
        char                    fbtp_name[MAX_FBTP_NAME_CHARS];
        struct modctl   *fbtp_ctl;
        int             fbtp_loadcnt;
-       int             fbtp_symndx;
-       int             fbtp_primary;
        struct fbt_probe *fbtp_next;
 } fbt_probe_t;
 
 extern int dtrace_invop(uintptr_t, uintptr_t *, uintptr_t);
 extern int fbt_invop(uintptr_t, uintptr_t *, uintptr_t);
 extern void fbt_provide_module(void *, struct modctl *);
        struct fbt_probe *fbtp_next;
 } fbt_probe_t;
 
 extern int dtrace_invop(uintptr_t, uintptr_t *, uintptr_t);
 extern int fbt_invop(uintptr_t, uintptr_t *, uintptr_t);
 extern void fbt_provide_module(void *, struct modctl *);
+extern int fbt_enable (void *arg, dtrace_id_t id, void *parg);
+
+extern bool fbt_module_excluded(struct modctl*);
+extern bool fbt_excluded(const char *);
 
 
+extern void fbt_blacklist_init(void);
+extern void fbt_provide_probe(struct modctl *ctl, const char *modname, const char *name, machine_inst_t *instr, machine_inst_t *limit);
 #endif /* _FBT_H */
 #endif /* _FBT_H */