xref: /freebsd/sys/amd64/include/stack.h (revision 370e009188ba90c3290b1479aa06ec98b66e140a)
1 /*
2  * This file is in the public domain.
3  */
4 /* $FreeBSD$ */
5 
6 #ifndef _MACHINE_STACK_H_
7 #define	_MACHINE_STACK_H_
8 
9 #include <x86/stack.h>
10 
11 #ifdef _SYS_PROC_H_
12 
13 /* Get the current kernel thread stack usage. */
14 #define GET_STACK_USAGE(total, used) do {				\
15 	struct thread	*td = curthread;				\
16 	(total) = td->td_kstack_pages * PAGE_SIZE;			\
17 	(used) = (char *)td->td_kstack +				\
18 	    td->td_kstack_pages * PAGE_SIZE -				\
19 	    (char *)&td;						\
20 } while (0)
21 
22 static __inline bool
23 kstack_contains(struct thread *td, vm_offset_t va, size_t len)
24 {
25 	return (va >= td->td_kstack && va + len >= va &&
26 	    va + len <= td->td_kstack + td->td_kstack_pages * PAGE_SIZE);
27 }
28 #endif	/* _SYS_PROC_H_ */
29 
30 #endif
31