mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
sys: Switch td_kstack from vm_offset_t to char *
Effort: CHERI upstreaming Reviewed by: kib Sponsored by: AFRL, DARPA Pull Request: https://github.com/freebsd/freebsd-src/pull/2068
This commit is contained in:
1 parent
8a0ff500d7
commit
fe2957f591
29 files changed
+65
-65
No files matched your search
@@ -1365,10 +1365,10 @@ hammer_time(u_int64_t modulep, u_int64_t physfree)
|
||||
/* Init basic tunables, hz etc */
|
||||
init_param1();
|
||||
|
||||
thread0.td_kstack = physfree - kernphys + KERNSTART;
|
||||
thread0.td_kstack = (char *)physfree - kernphys + KERNSTART;
|
||||
thread0.td_kstack_pages = kstack_pages;
|
||||
kstack0_sz = thread0.td_kstack_pages * PAGE_SIZE;
|
||||
bzero((void *)thread0.td_kstack, kstack0_sz);
|
||||
bzero(thread0.td_kstack, kstack0_sz);
|
||||
physfree += kstack0_sz;
|
||||
|
||||
/*
|
||||
@@ -1584,7 +1584,7 @@ hammer_time(u_int64_t modulep, u_int64_t physfree)
|
||||
fpuinit();
|
||||
|
||||
/* make an initial tss so cpu can get interrupt stack on syscall! */
|
||||
rsp0 = thread0.td_md.md_stack_base;
|
||||
rsp0 = (uintptr_t)thread0.td_md.md_stack_base;
|
||||
/* Ensure the stack is aligned to 16 bytes */
|
||||
rsp0 = STACKALIGN(rsp0);
|
||||
PCPU_PTR(common_tss)->tss_rsp0 = rsp0;
|
||||
@@ -1621,7 +1621,7 @@ hammer_time(u_int64_t modulep, u_int64_t physfree)
|
||||
TSEXIT();
|
||||
|
||||
/* Location of kernel stack for locore */
|
||||
return (thread0.td_md.md_stack_base);
|
||||
return ((uintptr_t)thread0.td_md.md_stack_base);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -75,7 +75,7 @@ struct mdthread {
|
||||
register_t md_efirt_tmp; /* (k) */
|
||||
int md_efirt_dis_pf; /* (k) */
|
||||
struct pcb md_pcb;
|
||||
vm_offset_t md_stack_base;
|
||||
void *md_stack_base;
|
||||
void *md_usr_fpu_save;
|
||||
};
|
||||
|
||||
|
||||
@@ -13,16 +13,16 @@
|
||||
#define GET_STACK_USAGE(total, used) do { \
|
||||
struct thread *td = curthread; \
|
||||
(total) = td->td_kstack_pages * PAGE_SIZE; \
|
||||
(used) = (char *)td->td_kstack + \
|
||||
td->td_kstack_pages * PAGE_SIZE - \
|
||||
(used) = td->td_kstack + td->td_kstack_pages * PAGE_SIZE - \
|
||||
(char *)&td; \
|
||||
} while (0)
|
||||
|
||||
static __inline bool
|
||||
kstack_contains(struct thread *td, vm_offset_t va, size_t len)
|
||||
{
|
||||
return (va >= td->td_kstack && va + len >= va &&
|
||||
va + len <= td->td_kstack + td->td_kstack_pages * PAGE_SIZE);
|
||||
return (va >= (vm_offset_t)td->td_kstack && va + len >= va &&
|
||||
va + len <= (vm_offset_t)td->td_kstack + td->td_kstack_pages *
|
||||
PAGE_SIZE);
|
||||
}
|
||||
#endif /* _SYS_PROC_H_ */
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@ cpu_startup(void *dummy)
|
||||
|
||||
bufinit();
|
||||
vm_pager_bufferinit();
|
||||
pcb->pcb_regs.sf_sp = (u_int)thread0.td_kstack +
|
||||
pcb->pcb_regs.sf_sp = (uintptr_t)thread0.td_kstack +
|
||||
USPACE_SVC_STACK_TOP;
|
||||
pmap_set_pcb_pagedir(kernel_pmap, pcb);
|
||||
}
|
||||
@@ -373,7 +373,7 @@ pcpu0_init(void)
|
||||
* Initialize proc0
|
||||
*/
|
||||
static void
|
||||
init_proc0(vm_offset_t kstack)
|
||||
init_proc0(void *kstack)
|
||||
{
|
||||
proc_linkup0(&proc0, &thread0);
|
||||
thread0.td_kstack = kstack;
|
||||
@@ -622,7 +622,7 @@ initarm(struct arm_boot_params *abp)
|
||||
*/
|
||||
/* Set stack for exception handlers */
|
||||
undefined_init();
|
||||
init_proc0(kernelstack);
|
||||
init_proc0((void *)kernelstack);
|
||||
arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL);
|
||||
enable_interrupts(PSR_A);
|
||||
pmap_bootstrap(0);
|
||||
|
||||
@@ -69,15 +69,15 @@ void unwind_module_unloaded(struct linker_file *);
|
||||
#define GET_STACK_USAGE(total, used) do { \
|
||||
struct thread *td = curthread; \
|
||||
(total) = td->td_kstack_pages * PAGE_SIZE - sizeof(struct pcb); \
|
||||
(used) = td->td_kstack + (total) - (vm_offset_t)&td; \
|
||||
(used) = td->td_kstack + (total) - (char *)&td; \
|
||||
} while (0)
|
||||
|
||||
static __inline bool
|
||||
kstack_contains(struct thread *td, vm_offset_t va, size_t len)
|
||||
{
|
||||
return (va >= td->td_kstack && va + len >= va &&
|
||||
va + len <= td->td_kstack + td->td_kstack_pages * PAGE_SIZE -
|
||||
sizeof(struct pcb));
|
||||
return (va >= (vm_offset_t)td->td_kstack && va + len >= va &&
|
||||
va + len <= (vm_offset_t)td->td_kstack + td->td_kstack_pages *
|
||||
PAGE_SIZE - sizeof(struct pcb));
|
||||
}
|
||||
#endif /* _SYS_PROC_H_ */
|
||||
|
||||
|
||||
@@ -428,7 +428,7 @@ makectx(struct trapframe *tf, struct pcb *pcb)
|
||||
}
|
||||
|
||||
static void
|
||||
init_proc0(vm_offset_t kstack)
|
||||
init_proc0(void *kstack)
|
||||
{
|
||||
struct pcpu *pcpup;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
struct arm64_bootparams {
|
||||
vm_offset_t modulep;
|
||||
vm_offset_t kern_stack;
|
||||
void *kern_stack;
|
||||
vm_paddr_t kern_ttbr0;
|
||||
int boot_el; /* EL the kernel booted from */
|
||||
int pad;
|
||||
|
||||
@@ -44,15 +44,15 @@ bool unwind_frame(struct thread *, struct unwind_state *);
|
||||
#define GET_STACK_USAGE(total, used) do { \
|
||||
struct thread *td = curthread; \
|
||||
(total) = td->td_kstack_pages * PAGE_SIZE - sizeof(struct pcb); \
|
||||
(used) = td->td_kstack + (total) - (vm_offset_t)&td; \
|
||||
(used) = td->td_kstack + (total) - (char *)&td; \
|
||||
} while (0)
|
||||
|
||||
static __inline bool
|
||||
kstack_contains(struct thread *td, vm_offset_t va, size_t len)
|
||||
{
|
||||
return (va >= td->td_kstack && va + len >= va &&
|
||||
va + len <= td->td_kstack + td->td_kstack_pages * PAGE_SIZE -
|
||||
sizeof(struct pcb));
|
||||
return (va >= (vm_offset_t)td->td_kstack && va + len >= va &&
|
||||
va + len <= (vm_offset_t)td->td_kstack + td->td_kstack_pages *
|
||||
PAGE_SIZE - sizeof(struct pcb));
|
||||
}
|
||||
#endif /* _SYS_PROC_H_ */
|
||||
|
||||
|
||||
+2
-2
@@ -358,8 +358,8 @@ DB_SHOW_COMMAND(thread, db_show_thread)
|
||||
if (td->td_name[0] != '\0')
|
||||
db_printf(" name: %s\n", td->td_name);
|
||||
db_printf(" pcb: %p\n", td->td_pcb);
|
||||
db_printf(" stack: %p-%p\n", (void *)td->td_kstack,
|
||||
(void *)(td->td_kstack + td->td_kstack_pages * PAGE_SIZE - 1));
|
||||
db_printf(" stack: %p-%p\n", td->td_kstack,
|
||||
td->td_kstack + td->td_kstack_pages * PAGE_SIZE - 1);
|
||||
db_printf(" flags: %#x ", td->td_flags);
|
||||
db_printf(" pflags: %#x\n", td->td_pflags);
|
||||
db_printf(" state: ");
|
||||
|
||||
+1
-1
@@ -84,7 +84,7 @@ db_show_threads(db_expr_t addr, bool hasaddr, db_expr_t cnt, char *mod)
|
||||
thr = kdb_thr_first();
|
||||
while (!db_pager_quit && thr != NULL) {
|
||||
db_printf(" %6ld (%p) (stack %p) ", (long)thr->td_tid, thr,
|
||||
(void *)thr->td_kstack);
|
||||
thr->td_kstack);
|
||||
prev_jb = kdb_jmpbuf(jb);
|
||||
if (setjmp(jb) == 0) {
|
||||
if (db_trace_thread(thr, 1) != 0)
|
||||
|
||||
@@ -1387,7 +1387,7 @@ init386(int first)
|
||||
vm_offset_t addend;
|
||||
size_t ucode_len;
|
||||
|
||||
thread0.td_kstack = proc0kstack;
|
||||
thread0.td_kstack = (char *)proc0kstack;
|
||||
thread0.td_kstack_pages = TD0_KSTACK_PAGES;
|
||||
|
||||
/*
|
||||
@@ -1499,8 +1499,8 @@ init386(int first)
|
||||
PCPU_SET(fsgs_gdt, &gdt[GUFS_SEL].sd);
|
||||
|
||||
/* Initialize the tss (except for the final esp0) early for vm86. */
|
||||
common_tss0.tss_esp0 = thread0.td_kstack + thread0.td_kstack_pages *
|
||||
PAGE_SIZE - VM86_STACK_SPACE;
|
||||
common_tss0.tss_esp0 = (vm_offset_t)thread0.td_kstack +
|
||||
thread0.td_kstack_pages * PAGE_SIZE - VM86_STACK_SPACE;
|
||||
common_tss0.tss_ss0 = GSEL(GDATA_SEL, SEL_KPL);
|
||||
common_tss0.tss_ioopt = sizeof(struct i386tss) << 16;
|
||||
gsel_tss = GSEL(GPROC0_SEL, SEL_KPL);
|
||||
|
||||
@@ -201,7 +201,7 @@ trap_check_kstack(void)
|
||||
if (stk >= PMAP_TRM_MIN_ADDRESS)
|
||||
panic("td %p stack %#x in trampoline", td, stk);
|
||||
if (!kstack_contains(td, stk, 0))
|
||||
panic("td %p stack %#x not in kstack VA %#x %d",
|
||||
panic("td %p stack %#x not in kstack VA %p %d",
|
||||
td, stk, td->td_kstack, td->td_kstack_pages);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -87,7 +87,7 @@ _Static_assert(__OFFSETOF_MONITORBUF == offsetof(struct pcpu, pc_monitorbuf),
|
||||
union savefpu *
|
||||
get_pcb_user_save_td(struct thread *td)
|
||||
{
|
||||
vm_offset_t p;
|
||||
char *p;
|
||||
|
||||
p = td->td_kstack + td->td_kstack_pages * PAGE_SIZE -
|
||||
roundup2(cpu_max_ext_state_size, XSAVE_AREA_ALIGN);
|
||||
@@ -108,7 +108,7 @@ get_pcb_user_save_pcb(struct pcb *pcb)
|
||||
struct pcb *
|
||||
get_pcb_td(struct thread *td)
|
||||
{
|
||||
vm_offset_t p;
|
||||
char *p;
|
||||
|
||||
p = td->td_kstack + td->td_kstack_pages * PAGE_SIZE -
|
||||
roundup2(cpu_max_ext_state_size, XSAVE_AREA_ALIGN) -
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
/* Get the current kernel thread stack usage. */
|
||||
#define GET_STACK_USAGE(total, used) do { \
|
||||
struct thread *td = curthread; \
|
||||
(total) = (vm_offset_t)get_pcb_td(td) - td->td_kstack; \
|
||||
(total) = (char *)get_pcb_td(td) - td->td_kstack; \
|
||||
(used) = (vm_offset_t)get_pcb_td(td) - (vm_offset_t)&td; \
|
||||
} while (0)
|
||||
|
||||
static __inline bool
|
||||
kstack_contains(struct thread *td, vm_offset_t va, size_t len)
|
||||
{
|
||||
return (va >= td->td_kstack && va + len >= va &&
|
||||
return (va >= (vm_offset_t)td->td_kstack && va + len >= va &&
|
||||
va + len <= (vm_offset_t)get_pcb_td(td));
|
||||
}
|
||||
|
||||
|
||||
@@ -1327,7 +1327,7 @@ fill_kinfo_thread(struct thread *td, struct kinfo_proc *kp, int preferthread)
|
||||
kp->ki_tid = td->td_tid;
|
||||
kp->ki_numthreads = p->p_numthreads;
|
||||
kp->ki_pcb = td->td_pcb;
|
||||
kp->ki_kstack = (void *)td->td_kstack;
|
||||
kp->ki_kstack = td->td_kstack;
|
||||
kp->ki_slptime = (ticks - td->td_slptick) / hz;
|
||||
kp->ki_pri.pri_class = td->td_pri_class;
|
||||
kp->ki_pri.pri_user = td->td_user_pri;
|
||||
|
||||
@@ -466,7 +466,7 @@ thread_init(void *mem, int size, int flags)
|
||||
td->td_turnstile = turnstile_alloc();
|
||||
EVENTHANDLER_DIRECT_INVOKE(thread_init, td);
|
||||
umtx_thread_init(td);
|
||||
td->td_kstack = 0;
|
||||
td->td_kstack = NULL;
|
||||
td->td_sel = NULL;
|
||||
return (0);
|
||||
}
|
||||
@@ -791,7 +791,7 @@ thread_alloc(int pages)
|
||||
|
||||
tid = tid_alloc();
|
||||
td = uma_zalloc(thread_zone, M_WAITOK);
|
||||
KASSERT(td->td_kstack == 0, ("thread_alloc got thread with kstack"));
|
||||
KASSERT(td->td_kstack == NULL, ("thread_alloc got thread with kstack"));
|
||||
if (!vm_thread_new(td, pages)) {
|
||||
uma_zfree(thread_zone, td);
|
||||
tid_free(tid);
|
||||
@@ -810,8 +810,8 @@ thread_alloc(int pages)
|
||||
int
|
||||
thread_recycle(struct thread *td, int pages)
|
||||
{
|
||||
if (td->td_kstack == 0 || td->td_kstack_pages != pages) {
|
||||
if (td->td_kstack != 0)
|
||||
if (td->td_kstack == NULL || td->td_kstack_pages != pages) {
|
||||
if (td->td_kstack != NULL)
|
||||
vm_thread_dispose(td);
|
||||
if (!vm_thread_new(td, pages))
|
||||
return (ENOMEM);
|
||||
@@ -834,7 +834,7 @@ thread_free_batched(struct thread *td)
|
||||
cpuset_rel(td->td_cpuset);
|
||||
td->td_cpuset = NULL;
|
||||
cpu_thread_free(td);
|
||||
if (td->td_kstack != 0)
|
||||
if (td->td_kstack != NULL)
|
||||
vm_thread_dispose(td);
|
||||
callout_drain(&td->td_slpcallout);
|
||||
/*
|
||||
|
||||
@@ -297,8 +297,8 @@ kasan_mark(const void *addr, size_t size, size_t redzsize, uint8_t code)
|
||||
void
|
||||
kasan_thread_alloc(struct thread *td)
|
||||
{
|
||||
if (td->td_kstack != 0) {
|
||||
kasan_mark((void *)td->td_kstack, ptoa(td->td_kstack_pages),
|
||||
if (td->td_kstack != NULL) {
|
||||
kasan_mark(td->td_kstack, ptoa(td->td_kstack_pages),
|
||||
ptoa(td->td_kstack_pages), 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,8 +461,8 @@ kmsan_thread_alloc(struct thread *td)
|
||||
__builtin_memset(mtd, 0, sizeof(*mtd));
|
||||
mtd->ctx = 0;
|
||||
|
||||
if (td->td_kstack != 0)
|
||||
kmsan_mark((void *)td->td_kstack, ptoa(td->td_kstack_pages),
|
||||
if (td->td_kstack != NULL)
|
||||
kmsan_mark(td->td_kstack, ptoa(td->td_kstack_pages),
|
||||
KMSAN_STATE_UNINIT);
|
||||
|
||||
td->td_kmsan = mtd;
|
||||
|
||||
@@ -962,7 +962,7 @@ moea_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
va = virtual_avail + KSTACK_GUARD_PAGES * PAGE_SIZE;
|
||||
virtual_avail = va + kstack_pages * PAGE_SIZE;
|
||||
CTR2(KTR_PMAP, "moea_bootstrap: kstack0 at %#x (%#x)", pa, va);
|
||||
thread0.td_kstack = va;
|
||||
thread0.td_kstack = (char *)va;
|
||||
thread0.td_kstack_pages = kstack_pages;
|
||||
for (i = 0; i < kstack_pages; i++) {
|
||||
moea_kenter(va, pa);
|
||||
|
||||
@@ -1184,7 +1184,7 @@ moea64_late_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
va = virtual_avail + KSTACK_GUARD_PAGES * PAGE_SIZE;
|
||||
virtual_avail = va + kstack_pages * PAGE_SIZE;
|
||||
CTR2(KTR_PMAP, "moea64_bootstrap: kstack0 at %#x (%#x)", pa, va);
|
||||
thread0.td_kstack = va;
|
||||
thread0.td_kstack = (char *)va;
|
||||
thread0.td_kstack_pages = kstack_pages;
|
||||
for (i = 0; i < kstack_pages; i++) {
|
||||
moea64_kenter(va, pa);
|
||||
|
||||
@@ -2083,7 +2083,7 @@ mmu_radix_late_bootstrap(vm_offset_t start, vm_offset_t end)
|
||||
va = virtual_avail + KSTACK_GUARD_PAGES * PAGE_SIZE;
|
||||
virtual_avail = va + kstack_pages * PAGE_SIZE;
|
||||
CTR2(KTR_PMAP, "moea64_bootstrap: kstack0 at %#x (%#x)", pa, va);
|
||||
thread0.td_kstack = va;
|
||||
thread0.td_kstack = (char *)va;
|
||||
for (i = 0; i < kstack_pages; i++) {
|
||||
mmu_radix_kenter(va, pa);
|
||||
pa += PAGE_SIZE;
|
||||
|
||||
@@ -930,7 +930,7 @@ mmu_booke_bootstrap(vm_offset_t start, vm_offset_t kernelend)
|
||||
|
||||
/* Enter kstack0 into kernel map, provide guard page */
|
||||
kstack0 = virtual_avail + KSTACK_GUARD_PAGES * PAGE_SIZE;
|
||||
thread0.td_kstack = kstack0;
|
||||
thread0.td_kstack = (char *)kstack0;
|
||||
thread0.td_kstack_pages = kstack_pages;
|
||||
|
||||
debugf("kstack_sz = 0x%08jx\n", (uintmax_t)kstack0_sz);
|
||||
|
||||
@@ -39,15 +39,15 @@ extern int end[];
|
||||
#define GET_STACK_USAGE(total, used) do { \
|
||||
struct thread *td = curthread; \
|
||||
(total) = td->td_kstack_pages * PAGE_SIZE - sizeof(struct pcb); \
|
||||
(used) = td->td_kstack + (total) - (vm_offset_t)&td; \
|
||||
(used) = td->td_kstack + (total) - (char *)&td; \
|
||||
} while (0)
|
||||
|
||||
static __inline bool
|
||||
kstack_contains(struct thread *td, vm_offset_t va, size_t len)
|
||||
{
|
||||
return (va >= td->td_kstack && va + len >= va &&
|
||||
va + len <= td->td_kstack + td->td_kstack_pages * PAGE_SIZE -
|
||||
sizeof(struct pcb));
|
||||
return (va >= (vm_offset_t)td->td_kstack && va + len >= va &&
|
||||
va + len <= (vm_offset_t)td->td_kstack + td->td_kstack_pages *
|
||||
PAGE_SIZE - sizeof(struct pcb));
|
||||
}
|
||||
#endif /* _SYS_PROC_H_ */
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
struct riscv_bootparams {
|
||||
vm_offset_t kern_phys; /* Kernel base (physical) addr */
|
||||
vm_offset_t kern_stack;
|
||||
void *kern_stack;
|
||||
vm_offset_t dtbp_phys; /* Device tree blob physical addr */
|
||||
vm_offset_t modulep; /* loader(8) metadata */
|
||||
};
|
||||
|
||||
@@ -54,15 +54,15 @@ bool unwind_frame(struct thread *, struct unwind_state *);
|
||||
#define GET_STACK_USAGE(total, used) do { \
|
||||
struct thread *td = curthread; \
|
||||
(total) = td->td_kstack_pages * PAGE_SIZE - sizeof(struct pcb); \
|
||||
(used) = td->td_kstack + (total) - (vm_offset_t)&td; \
|
||||
(used) = td->td_kstack + (total) - (char *)&td; \
|
||||
} while (0)
|
||||
|
||||
static __inline bool
|
||||
kstack_contains(struct thread *td, vm_offset_t va, size_t len)
|
||||
{
|
||||
return (va >= td->td_kstack && va + len >= va &&
|
||||
va + len <= td->td_kstack + td->td_kstack_pages * PAGE_SIZE -
|
||||
sizeof(struct pcb));
|
||||
return (va >= (vm_offset_t)td->td_kstack && va + len >= va &&
|
||||
va + len <= (vm_offset_t)td->td_kstack + td->td_kstack_pages *
|
||||
PAGE_SIZE - sizeof(struct pcb));
|
||||
}
|
||||
#endif /* _SYS_PROC_H_ */
|
||||
|
||||
|
||||
@@ -287,7 +287,7 @@ makectx(struct trapframe *tf, struct pcb *pcb)
|
||||
}
|
||||
|
||||
static void
|
||||
init_proc0(vm_offset_t kstack)
|
||||
init_proc0(void *kstack)
|
||||
{
|
||||
struct pcpu *pcpup;
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
static void
|
||||
cpu_set_pcb_frame(struct thread *td)
|
||||
{
|
||||
td->td_pcb = (struct pcb *)((char *)td->td_kstack +
|
||||
td->td_pcb = (struct pcb *)(td->td_kstack +
|
||||
td->td_kstack_pages * PAGE_SIZE) - 1;
|
||||
|
||||
/*
|
||||
|
||||
+1
-1
@@ -367,7 +367,7 @@ struct thread {
|
||||
/* LP64 hole */
|
||||
struct callout td_slpcallout; /* (h) Callout for sleep. */
|
||||
struct trapframe *td_frame; /* (k) */
|
||||
vm_offset_t td_kstack; /* (a) Kernel VA of kstack. */
|
||||
char *td_kstack; /* (a) Pointer to kstack. */
|
||||
u_short td_kstack_pages; /* (a) Size of the kstack. */
|
||||
u_short td_kstack_domain; /* (a) Domain backing kstack KVA. */
|
||||
volatile u_int td_critnest; /* (k*) Critical section nest level. */
|
||||
|
||||
+6
-6
@@ -540,7 +540,7 @@ vm_thread_new(struct thread *td, int pages)
|
||||
ks_domain = vm_phys_domain(vtophys(ks));
|
||||
KASSERT(ks_domain >= 0 && ks_domain < vm_ndomains,
|
||||
("%s: invalid domain for kstack %p", __func__, (void *)ks));
|
||||
td->td_kstack = (vm_offset_t)ks;
|
||||
td->td_kstack = ks;
|
||||
td->td_kstack_pages = pages;
|
||||
td->td_kstack_domain = ks_domain;
|
||||
return (1);
|
||||
@@ -556,8 +556,8 @@ vm_thread_dispose(struct thread *td)
|
||||
int pages;
|
||||
|
||||
pages = td->td_kstack_pages;
|
||||
ks = (void *)td->td_kstack;
|
||||
td->td_kstack = 0;
|
||||
ks = td->td_kstack;
|
||||
td->td_kstack = NULL;
|
||||
td->td_kstack_pages = 0;
|
||||
td->td_kstack_domain = MAXMEMDOM;
|
||||
if (pages == kstack_pages) {
|
||||
@@ -727,8 +727,8 @@ SYSCTL_INT(_debug, OID_AUTO, max_kstack_used, CTLFLAG_RD,
|
||||
void
|
||||
intr_prof_stack_use(struct thread *td, struct trapframe *frame)
|
||||
{
|
||||
vm_offset_t stack_top;
|
||||
vm_offset_t current;
|
||||
char *stack_top;
|
||||
char *current;
|
||||
int used, prev_used;
|
||||
|
||||
/*
|
||||
@@ -740,7 +740,7 @@ intr_prof_stack_use(struct thread *td, struct trapframe *frame)
|
||||
return;
|
||||
|
||||
stack_top = td->td_kstack + td->td_kstack_pages * PAGE_SIZE;
|
||||
current = (vm_offset_t)(uintptr_t)&stack_top;
|
||||
current = (char *)&stack_top;
|
||||
|
||||
/*
|
||||
* Try to detect if interrupt is using kernel thread stack.
|
||||
|
||||
Reference in new issue
Block a user