PatchworkOS  19e446b
A non-POSIX operating system.
Loading...
Searching...
No Matches
irp.c File Reference
#include <kernel/cpu/cpu.h>
#include <kernel/fs/namespace.h>
#include <kernel/io/irp.h>
#include <kernel/log/log.h>
#include <kernel/log/panic.h>
#include <kernel/mem/mdl.h>
#include <kernel/mem/pool.h>
#include <kernel/proc/process.h>
#include <kernel/sched/clock.h>
#include <kernel/sched/timer.h>
#include <kernel/sched/wait.h>
#include <kernel/sync/lock.h>
#include <stdatomic.h>
#include <string.h>
#include <kernel/cpu/percpu.h>
Include dependency graph for irp.c:

Go to the source code of this file.

Data Structures

struct  irp_ctx_t
 

Functions

 PERCPU_DEFINE_CTOR (irp_ctx_t, pcpu_irps)
 
irp_pool_tirp_pool_new (size_t size, process_t *process, void *ctx)
 Allocate a new IRP pool.
 
void irp_pool_free (irp_pool_t *pool)
 Free a IRP pool.
 
void irp_timeout_add (irp_t *irp, clock_t timeout)
 Add an IRP to a per-CPU timeout queue.
 
void irp_timeout_remove (irp_t *irp)
 Remove an IRP from its per-CPU timeout queue.
 
static void irp_perform_completion (irp_t *irp)
 
void irp_timeouts_check (void)
 Check and handle expired IRP timeouts on the current CPU.
 
irp_tirp_new (irp_pool_t *pool)
 Allocate a new IRP from a pool.
 
mdl_tirp_get_mdl (irp_t *irp, const void *addr, size_t size)
 Retrieve a memory descriptor list and associate it with an IRP.
 
void irp_call (irp_t *irp, vnode_t *vnode)
 Send an IRP to a specified vnode.
 
void irp_call_direct (irp_t *irp, irp_func_t func)
 Send an IRP to a specified function directly.
 
uint64_t irp_cancel (irp_t *irp)
 Attempt to cancel an IRP.
 
void irp_complete (irp_t *irp)
 Complete the current frame in the IRP stack.
 

Function Documentation

◆ PERCPU_DEFINE_CTOR()

PERCPU_DEFINE_CTOR ( irp_ctx_t  ,
pcpu_irps   
)

Definition at line 24 of file irp.c.

Here is the call graph for this function:

◆ irp_perform_completion()

static void irp_perform_completion ( irp_t irp)
static

Definition at line 118 of file irp.c.

Here is the call graph for this function:
Here is the caller graph for this function: