Page MenuHomeFreeBSD

D32580.id97171.diff
No OneTemporary

D32580.id97171.diff

Index: sys/arm/include/proc.h
===================================================================
--- sys/arm/include/proc.h
+++ sys/arm/include/proc.h
@@ -80,4 +80,17 @@
register_t args[MAXARGS];
} __aligned(8);
+#ifdef _KERNEL
+#include <machine/pcb.h>
+
+/* Get the current kernel thread stack usage. */
+#define GET_STACK_USAGE(total, used) do { \
+ struct thread *td = curthread; \
+ (total) = td->td_kstack_pages * PAGE_SIZE - sizeof(struct pcb); \
+ (used) = (char *)td->td_kstack + \
+ td->td_kstack_pages * PAGE_SIZE - \
+ (char *)&td; \
+} while (0)
+
+#endif /* _KERNEL */
#endif /* !_MACHINE_PROC_H_ */
Index: sys/geom/geom_io.c
===================================================================
--- sys/geom/geom_io.c
+++ sys/geom/geom_io.c
@@ -559,7 +559,6 @@
atomic_add_int(&cp->nstart, 1);
#endif
-#ifdef GET_STACK_USAGE
direct = (cp->flags & G_CF_DIRECT_SEND) != 0 &&
(pp->flags & G_PF_DIRECT_RECEIVE) != 0 &&
!g_is_geom_thread(curthread) &&
@@ -573,9 +572,6 @@
if (su * 2 > st)
direct = 0;
}
-#else
- direct = 0;
-#endif
if (direct) {
error = g_io_check(bp);
@@ -655,7 +651,6 @@
bp->bio_bcount = bp->bio_length;
bp->bio_resid = bp->bio_bcount - bp->bio_completed;
-#ifdef GET_STACK_USAGE
direct = (pp->flags & G_PF_DIRECT_SEND) &&
(cp->flags & G_CF_DIRECT_RECEIVE) &&
!g_is_geom_thread(curthread);
@@ -666,9 +661,6 @@
if (su * 2 > st)
direct = 0;
}
-#else
- direct = 0;
-#endif
/*
* The statistics collection is lockless, as such, but we
Index: sys/mips/include/proc.h
===================================================================
--- sys/mips/include/proc.h
+++ sys/mips/include/proc.h
@@ -96,4 +96,17 @@
#define KINFO_PROC_SIZE 816
#endif
+#ifdef _KERNEL
+#include <machine/pcb.h>
+
+/* Get the current kernel thread stack usage. */
+#define GET_STACK_USAGE(total, used) do { \
+ struct thread *td = curthread; \
+ (total) = td->td_kstack_pages * PAGE_SIZE - sizeof(struct pcb); \
+ (used) = (char *)td->td_kstack + \
+ td->td_kstack_pages * PAGE_SIZE - \
+ (char *)&td; \
+} while (0)
+
+#endif /* _KERNEL */
#endif /* !_MACHINE_PROC_H_ */
Index: sys/netgraph/ng_base.c
===================================================================
--- sys/netgraph/ng_base.c
+++ sys/netgraph/ng_base.c
@@ -2281,7 +2281,7 @@
queue = 1;
} else {
queue = 0;
-#ifdef GET_STACK_USAGE
+
/*
* Most of netgraph nodes have small stack consumption and
* for them 25% of free stack space is more than enough.
@@ -2296,7 +2296,6 @@
((node->nd_flags & NGF_HI_STACK) || (hook &&
(hook->hk_flags & HK_HI_STACK)))))
queue = 1;
-#endif
}
if (queue) {
Index: sys/riscv/include/proc.h
===================================================================
--- sys/riscv/include/proc.h
+++ sys/riscv/include/proc.h
@@ -53,4 +53,17 @@
register_t args[MAXARGS];
};
+#ifdef _KERNEL
+#include <machine/pcb.h>
+
+/* Get the current kernel thread stack usage. */
+#define GET_STACK_USAGE(total, used) do { \
+ struct thread *td = curthread; \
+ (total) = td->td_kstack_pages * PAGE_SIZE - sizeof(struct pcb); \
+ (used) = (char *)td->td_kstack + \
+ td->td_kstack_pages * PAGE_SIZE - \
+ (char *)&td; \
+} while (0)
+
+#endif /* _KERNEL */
#endif /* !_MACHINE_PROC_H_ */

File Metadata

Mime Type
text/plain
Expires
Fri, Apr 3, 7:24 AM (9 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30749062
Default Alt Text
D32580.id97171.diff (3 KB)

Event Timeline