]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/sys/fasttrap_impl.h
xnu-6153.81.5.tar.gz
[apple/xnu.git] / bsd / sys / fasttrap_impl.h
index 439d36864f0840838e814e64c73a74e3d47f90fd..109118fb192c09e87fc4a1265480da90f591355f 100644 (file)
 #ifndef        _FASTTRAP_IMPL_H
 #define        _FASTTRAP_IMPL_H
 
-/*
- * #pragma ident       "@(#)fasttrap_impl.h    1.14    08/04/09 SMI"
- */
-
 #include <sys/types.h>
 #include <sys/dtrace.h>
 #include <sys/proc.h>
@@ -97,6 +93,7 @@ typedef struct fasttrap_provider {
        uint_t ftp_retired;                     /* mark when retired */
        lck_mtx_t ftp_mtx;                      /* provider lock */
        lck_mtx_t ftp_cmtx;                     /* lock on creating probes */
+       uint64_t ftp_pcount;                    /* probes in provider count */
        uint64_t ftp_rcount;                    /* enabled probes ref count */
        uint64_t ftp_ccount;                    /* consumers creating probes */
        uint64_t ftp_mcount;                    /* meta provider count */
@@ -130,6 +127,7 @@ struct fasttrap_probe {
        uint8_t *ftp_argmap;                    /* native to translated args */
        uint8_t ftp_nargs;                      /* translated argument count */
        uint8_t ftp_enabled;                    /* is this probe enabled */
+       uint8_t ftp_triggered;
        char *ftp_xtypes;                       /* translated types index */
        char *ftp_ntypes;                       /* native types index */
        fasttrap_id_tp_t ftp_tps[1];            /* flexible array */
@@ -188,6 +186,8 @@ extern fasttrap_hash_t              fasttrap_tpoints;
 #define        FASTTRAP_TPOINTS_INDEX(pid, pc) \
        (((pc) / sizeof (fasttrap_instr_t) + (pid)) & fasttrap_tpoints.fth_mask)
 
+extern void fasttrap_tracepoint_retire(proc_t *p, fasttrap_tracepoint_t *tp);
+
 /*
  * Must be implemented by fasttrap_isa.c
  */
@@ -199,6 +199,9 @@ extern int fasttrap_tracepoint_remove(proc_t *, fasttrap_tracepoint_t *);
 #if defined(__x86_64__)
 extern int fasttrap_pid_probe(x86_saved_state_t *regs);
 extern int fasttrap_return_probe(x86_saved_state_t* regs);
+#elif defined(__arm__) || defined(__arm64__)
+extern int fasttrap_pid_probe(arm_saved_state_t *rp);
+extern int fasttrap_return_probe(arm_saved_state_t *regs);
 #else
 #error architecture not supported
 #endif
@@ -206,6 +209,7 @@ extern int fasttrap_return_probe(x86_saved_state_t* regs);
 extern uint64_t fasttrap_pid_getarg(void *, dtrace_id_t, void *, int, int);
 extern uint64_t fasttrap_usdt_getarg(void *, dtrace_id_t, void *, int, int);
 
+
 #ifdef __cplusplus
 }
 #endif