arch/um/kernel/skas/process.c
Source file repositories/reference/linux-study-clean/arch/um/kernel/skas/process.c
File Facts
- System
- Linux kernel
- Corpus path
arch/um/kernel/skas/process.c- Extension
.c- Size
- 1501 bytes
- Lines
- 80
- Domain
- Architecture Layer
- Bucket
- arch/um
- Inferred role
- Architecture Layer: implementation source
- Status
- source implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/init.hlinux/sched/mm.hlinux/sched/task_stack.hlinux/sched/task.hlinux/smp-internal.hasm/tlbflush.has-layout.hkern.hos.hskas.hkern_util.h
Detected Declarations
function start_kernel_procfunction start_umlfunction current_stub_stackfunction current_mm_syncfunction initial_jmpbuf_lockfunction initial_jmpbuf_unlock
Annotated Snippet
extern void start_kernel(void);
static int __init start_kernel_proc(void *unused)
{
block_signals_trace();
start_kernel();
return 0;
}
char cpu_irqstacks[NR_CPUS][THREAD_SIZE] __aligned(THREAD_SIZE);
int __init start_uml(void)
{
stack_protections((unsigned long) &cpu_irqstacks[0]);
set_sigstack(cpu_irqstacks[0], THREAD_SIZE);
init_new_thread_signals();
init_task.thread.request.thread.proc = start_kernel_proc;
init_task.thread.request.thread.arg = NULL;
return start_idle_thread(task_stack_page(&init_task),
&init_task.thread.switch_buf);
}
unsigned long current_stub_stack(void)
{
if (current->mm == NULL)
return 0;
return current->mm->context.id.stack;
}
struct mm_id *current_mm_id(void)
{
if (current->mm == NULL)
return NULL;
return ¤t->mm->context.id;
}
void current_mm_sync(void)
{
if (current->mm == NULL)
return;
um_tlb_sync(current->mm);
}
static DEFINE_SPINLOCK(initial_jmpbuf_spinlock);
void initial_jmpbuf_lock(void)
{
spin_lock_irq(&initial_jmpbuf_spinlock);
}
void initial_jmpbuf_unlock(void)
{
spin_unlock_irq(&initial_jmpbuf_spinlock);
}
Annotation
- Immediate include surface: `linux/init.h`, `linux/sched/mm.h`, `linux/sched/task_stack.h`, `linux/sched/task.h`, `linux/smp-internal.h`, `asm/tlbflush.h`, `as-layout.h`, `kern.h`.
- Detected declarations: `function start_kernel_proc`, `function start_uml`, `function current_stub_stack`, `function current_mm_sync`, `function initial_jmpbuf_lock`, `function initial_jmpbuf_unlock`.
- Atlas domain: Architecture Layer / arch/um.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.