kaiocb
jobtotid(struct kaiocb *job)
aiotx_free_job(struct kaiocb *job)
struct kaiocb *job;
alloc_aiotx_mbuf(struct kaiocb *job, int len)
t4_aiotx_process_job(struct toepcb *toep, struct socket *so, struct kaiocb *job)
struct kaiocb *job;
t4_aiotx_cancel(struct kaiocb *job)
t4_aio_queue_aiotx(struct socket *so, struct kaiocb *job)
static void t4_aiotx_cancel(struct kaiocb *job);
struct kaiocb *job;
struct kaiocb *job;
ddp_complete_one(struct kaiocb *job, int error)
hold_aio(struct toepcb *toep, struct kaiocb *job, struct pageset **pps)
struct kaiocb *job;
aio_ddp_cancel_one(struct kaiocb *job)
aio_ddp_requeue_one(struct toepcb *toep, struct kaiocb *job)
struct kaiocb *job;
t4_aio_cancel_active(struct kaiocb *job)
t4_aio_cancel_queued(struct kaiocb *job)
t4_aio_queue_ddp(struct socket *so, struct kaiocb *job)
struct kaiocb *job;
struct kaiocb *job;
static void t4_aio_cancel_active(struct kaiocb *job);
static void t4_aio_cancel_queued(struct kaiocb *job);
t4_aio_queue_tom(struct socket *so, struct kaiocb *job)
struct kaiocb *job;
TAILQ_HEAD(, kaiocb) aiojobq; /* (a) */
struct kaiocb *queueing; /* (a) */
TAILQ_HEAD(, kaiocb) aiotx_jobq;
int t4_aio_queue_aiotx(struct socket *, struct kaiocb *);
int t4_aio_queue_ddp(struct socket *, struct kaiocb *);
soaio_process_job(struct socket *so, sb_which which, struct kaiocb *job)
struct kaiocb *job;
soo_aio_cancel(struct kaiocb *job)
soo_aio_queue(struct file *fp, struct kaiocb *job)
soaio_queue_generic(struct socket *so, struct kaiocb *job)
static void soo_aio_cancel(struct kaiocb *job);
aio_set_cancel_function_locked(struct kaiocb *job, aio_cancel_fn_t *func)
aio_set_cancel_function(struct kaiocb *job, aio_cancel_fn_t *func)
aio_complete(struct kaiocb *job, long status, int error)
aio_cancel(struct kaiocb *job)
aio_switch_vmspace(struct kaiocb *job)
struct kaiocb *job;
aio_qbio(struct proc *p, struct kaiocb *job)
aiocb_copyin_old_sigevent(struct aiocb *ujob, struct kaiocb *kjob,
aiocb_copyin(struct aiocb *ujob, struct kaiocb *kjob, int type)
struct kaiocb *job;
aio_cancel_daemon_job(struct kaiocb *job)
aio_schedule(struct kaiocb *job, aio_handle_fn_t *func)
aio_cancel_sync(struct kaiocb *job)
aio_queue_file(struct file *fp, struct kaiocb *job)
struct kaiocb *job2;
struct kaiocb *job;
struct kaiocb *firstjob, *job;
struct kaiocb *job, *jobn, marker;
struct kaiocb *job;
struct kaiocb *job = (struct kaiocb *)bp->bio_caller1;
struct kaiocb *job = (struct kaiocb *)bp->bio_caller1;
struct kaiocb *job;
struct kaiocb *job;
job = (struct kaiocb *)(uintptr_t)kn->kn_sdata;
TAILQ_HEAD(,kaiocb) kaio_all; /* (a) all AIOs in a process */
TAILQ_HEAD(,kaiocb) kaio_done; /* (a) done queue for process */
struct kaiocb *job = kn->kn_ptr.p_aio;
TAILQ_HEAD(,kaiocb) kaio_jobqueue; /* (a) job queue for process */
TAILQ_HEAD(,kaiocb) kaio_syncqueue; /* (a) queue for aio_fsync */
TAILQ_HEAD(,kaiocb) kaio_syncready; /* (a) second q for aio_fsync */
aiocb32_copyin_old_sigevent(struct aiocb *ujob, struct kaiocb *kjob,
aiocb32_copyin(struct aiocb *ujob, struct kaiocb *kjob, int type)
int (*aio_copyin)(struct aiocb *ujob, struct kaiocb *kjob, int ty);
static TAILQ_HEAD(,kaiocb) aio_jobs; /* (c) Async job list */
static int aio_free_entry(struct kaiocb *job);
static void aio_process_rw(struct kaiocb *job);
static void aio_process_sync(struct kaiocb *job);
static void aio_process_mlock(struct kaiocb *job);
static int aio_queue_file(struct file *fp, struct kaiocb *job);
static int aio_qbio(struct proc *p, struct kaiocb *job);
static void aio_bio_done_notify(struct proc *userp, struct kaiocb *job);
static bool aio_clear_cancel_function_locked(struct kaiocb *job);
aiocb_zone = uma_zcreate("AIOCB", sizeof(struct kaiocb), NULL, NULL,
aio_free_entry(struct kaiocb *job)
aio_cancel_job(struct proc *p, struct kaioinfo *ki, struct kaiocb *job)
struct kaiocb *job, *jobn;
static struct kaiocb *
struct kaiocb *job;
aio_process_rw(struct kaiocb *job)
aio_process_sync(struct kaiocb *job)
aio_process_mlock(struct kaiocb *job)
aio_bio_done_notify(struct proc *userp, struct kaiocb *job)
struct kaiocb *sjob, *sjobn;
struct kaiocb *job;
aio_cancel_cleared(struct kaiocb *job)
aio_clear_cancel_function_locked(struct kaiocb *job)
aio_clear_cancel_function(struct kaiocb *job)
typedef void aio_cancel_fn_t(struct kaiocb *);
typedef void aio_handle_fn_t(struct kaiocb *);
TAILQ_ENTRY(kaiocb) list; /* (b) backend-specific list of jobs */
TAILQ_ENTRY(kaiocb) plist; /* (a) lists of pending / done jobs */
TAILQ_ENTRY(kaiocb) allist; /* (a) list of all jobs in proc */
bool aio_cancel_cleared(struct kaiocb *job);
void aio_cancel(struct kaiocb *job);
bool aio_clear_cancel_function(struct kaiocb *job);
void aio_complete(struct kaiocb *job, long status, int error);
void aio_schedule(struct kaiocb *job, aio_handle_fn_t *func);
bool aio_set_cancel_function(struct kaiocb *job, aio_cancel_fn_t *func);
void aio_switch_vmspace(struct kaiocb *job);
struct kaiocb *p_aio; /* AIO job pointer */
typedef int fo_aio_queue_t(struct file *fp, struct kaiocb *job);
fo_aio_queue(struct file *fp, struct kaiocb *job)
struct kaiocb;
typedef int pr_aio_queue_t(struct socket *, struct kaiocb *);
struct kaiocb;
TAILQ_HEAD(, kaiocb) sb_aiojobq; /* pending AIO ops */
int soaio_queue_generic(struct socket *so, struct kaiocb *job);