static int sysctl_kern_ktrace_request_pool(SYSCTL_HANDLER_ARGS) { struct thread *td; u_int newsize, oldsize, wantsize; int error; /* Handle easy read-only case first to avoid warnings from GCC. */ if (!req->newptr) { oldsize = ktr_requestpool; return (SYSCTL_OUT(req, &oldsize, sizeof(u_int))); } error = SYSCTL_IN(req, &wantsize, sizeof(u_int)); if (error) return (error); td = curthread; ktrace_enter(td); oldsize = ktr_requestpool; newsize = ktrace_resize_pool(oldsize, wantsize); ktrace_exit(td); error = SYSCTL_OUT(req, &oldsize, sizeof(u_int)); if (error) return (error); if (wantsize > oldsize && newsize < wantsize) return (ENOSPC); return (0); }
/* ARGSUSED */ void __xfs_dqtrace_entry( xfs_dquot_t *dqp, char *func, void *retaddr, xfs_inode_t *ip) { xfs_dquot_t *udqp = NULL; xfs_ino_t ino = 0; ASSERT(dqp->q_trace); if (ip) { ino = ip->i_ino; udqp = ip->i_udquot; } ktrace_enter(dqp->q_trace, (void *)(__psint_t)DQUOT_KTRACE_ENTRY, (void *)func, (void *)(__psint_t)dqp->q_nrefs, (void *)(__psint_t)dqp->dq_flags, (void *)(__psint_t)dqp->q_res_bcount, (void *)(__psint_t)be64_to_cpu(dqp->q_core.d_bcount), (void *)(__psint_t)be64_to_cpu(dqp->q_core.d_icount), (void *)(__psint_t)be64_to_cpu(dqp->q_core.d_blk_hardlimit), (void *)(__psint_t)be64_to_cpu(dqp->q_core.d_blk_softlimit), (void *)(__psint_t)be64_to_cpu(dqp->q_core.d_ino_hardlimit), (void *)(__psint_t)be64_to_cpu(dqp->q_core.d_ino_softlimit), (void *)(__psint_t)be32_to_cpu(dqp->q_core.d_id), (void *)(__psint_t)current_pid(), (void *)(__psint_t)ino, (void *)(__psint_t)retaddr, (void *)(__psint_t)udqp); return; }
STATIC void xfs_filestreams_trace( xfs_mount_t *mp, /* mount point */ int type, /* type of trace */ const char *func, /* source function */ int line, /* source line number */ __psunsigned_t arg0, __psunsigned_t arg1, __psunsigned_t arg2, __psunsigned_t arg3, __psunsigned_t arg4, __psunsigned_t arg5) { ktrace_enter(xfs_filestreams_trace_buf, (void *)(__psint_t)(type | (line << 16)), (void *)func, (void *)(__psunsigned_t)current_pid(), (void *)mp, (void *)(__psunsigned_t)arg0, (void *)(__psunsigned_t)arg1, (void *)(__psunsigned_t)arg2, (void *)(__psunsigned_t)arg3, (void *)(__psunsigned_t)arg4, (void *)(__psunsigned_t)arg5, NULL, NULL, NULL, NULL, NULL, NULL); }
/* ARGSUSED */ void xfs_dqtrace_entry__( xfs_dquot_t *dqp, char *func, void *retaddr, xfs_inode_t *ip) { xfs_dquot_t *udqp = NULL; int ino; ASSERT(dqp->q_trace); if (ip) { ino = ip->i_ino; udqp = ip->i_udquot; } ktrace_enter(dqp->q_trace, (void *)(__psint_t)DQUOT_KTRACE_ENTRY, (void *)func, (void *)(__psint_t)dqp->q_nrefs, (void *)(__psint_t)dqp->dq_flags, (void *)(__psint_t)dqp->q_res_bcount, (void *)(__psint_t)INT_GET(dqp->q_core.d_bcount, ARCH_CONVERT), (void *)(__psint_t)INT_GET(dqp->q_core.d_icount, ARCH_CONVERT), (void *)(__psint_t)INT_GET(dqp->q_core.d_blk_hardlimit, ARCH_CONVERT), (void *)(__psint_t)INT_GET(dqp->q_core.d_blk_softlimit, ARCH_CONVERT), (void *)(__psint_t)INT_GET(dqp->q_core.d_ino_hardlimit, ARCH_CONVERT), (void *)(__psint_t)INT_GET(dqp->q_core.d_ino_softlimit, ARCH_CONVERT), (void *)(__psint_t)INT_GET(dqp->q_core.d_id, ARCH_CONVERT), /* 11 */ (void *)(__psint_t)current_pid(), (void *)(__psint_t)ino, (void *)(__psint_t)retaddr, (void *)(__psint_t)udqp); return; }
STATIC void xfs_filestreams_trace( xfs_mount_t *mp, int type, const char *func, int line, __psunsigned_t arg0, __psunsigned_t arg1, __psunsigned_t arg2, __psunsigned_t arg3, __psunsigned_t arg4, __psunsigned_t arg5) { ktrace_enter(xfs_filestreams_trace_buf, (void *)(__psint_t)(type | (line << 16)), (void *)func, (void *)(__psunsigned_t)current_pid(), (void *)mp, (void *)(__psunsigned_t)arg0, (void *)(__psunsigned_t)arg1, (void *)(__psunsigned_t)arg2, (void *)(__psunsigned_t)arg3, (void *)(__psunsigned_t)arg4, (void *)(__psunsigned_t)arg5, NULL, NULL, NULL, NULL, NULL, NULL); }
/* * Enter something in the trace buffers. */ static void xfs_dir2_trace_enter( xfs_inode_t *dp, int type, char *where, char *name, int namelen, void *a0, void *a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7) { void *n[5]; ASSERT(xfs_dir2_trace_buf); ASSERT(dp->i_dir_trace); if (name) memcpy(n, name, min((int)sizeof(n), namelen)); else memset((char *)n, 0, sizeof(n)); ktrace_enter(xfs_dir2_trace_buf, (void *)(long)type, (void *)where, (void *)a0, (void *)a1, (void *)a2, (void *)a3, (void *)a4, (void *)a5, (void *)a6, (void *)a7, (void *)(long)namelen, (void *)n[0], (void *)n[1], (void *)n[2], (void *)n[3], (void *)n[4]); ktrace_enter(dp->i_dir_trace, (void *)(long)type, (void *)where, (void *)a0, (void *)a1, (void *)a2, (void *)a3, (void *)a4, (void *)a5, (void *)a6, (void *)a7, (void *)(long)namelen, (void *)n[0], (void *)n[1], (void *)n[2], (void *)n[3], (void *)n[4]); }
/* * Enter something in the trace buffers. */ static void xfs_dir2_trace_enter( xfs_inode_t *dp, int type, char *where, char *name, int namelen, __psunsigned_t a0, __psunsigned_t a1, __psunsigned_t a2, __psunsigned_t a3, __psunsigned_t a4, __psunsigned_t a5, __psunsigned_t a6) { __psunsigned_t n[6]; ASSERT(xfs_dir2_trace_buf); ASSERT(dp->i_dir_trace); if (name) memcpy(n, name, min(sizeof(n), namelen)); else memset((char *)n, 0, sizeof(n)); ktrace_enter(xfs_dir2_trace_buf, (void *)(__psunsigned_t)type, (void *)where, (void *)a0, (void *)a1, (void *)a2, (void *)a3, (void *)a4, (void *)a5, (void *)a6, (void *)(__psunsigned_t)namelen, (void *)n[0], (void *)n[1], (void *)n[2], (void *)n[3], (void *)n[4], (void *)n[5]); ktrace_enter(dp->i_dir_trace, (void *)(__psunsigned_t)type, (void *)where, (void *)a0, (void *)a1, (void *)a2, (void *)a3, (void *)a4, (void *)a5, (void *)a6, (void *)(__psunsigned_t)namelen, (void *)n[0], (void *)n[1], (void *)n[2], (void *)n[3], (void *)n[4], (void *)n[5]); }