AquilaOS documentation
How it works, and its code
Loading...
Searching...
No Matches
zero.c File Reference

/dev/zero (character device 1, 5): reading it gives as many zero bytes as asked for, and what is written to it is thrown away. More...

#include <core/system.h>
#include <dev/dev.h>
#include <fs/posix.h>
#include <aquila/errno.h>
#include <memdev.h>

Go to the source code of this file.

Functions

static ssize_t zerodev_read (struct devid *dd, off_t offset, struct iobuf *io)
 Fills the reader's buffer with zeros.
static ssize_t zerodev_write (struct devid *dd, off_t offset, struct iobuf *io)
 Takes all that is written, and throws it away.

Variables

struct dev zerodev

Detailed Description

/dev/zero (character device 1, 5): reading it gives as many zero bytes as asked for, and what is written to it is thrown away.

Definition in file zero.c.

Function Documentation

◆ zerodev_read()

ssize_t zerodev_read ( struct devid * dd,
off_t offset,
struct iobuf * io )
static

Fills the reader's buffer with zeros.

Definition at line 16 of file zero.c.

References iobuf_zero(), iobuf::resid, and zerodev_read().

Referenced by zerodev_read().

◆ zerodev_write()

ssize_t zerodev_write ( struct devid * dd,
off_t offset,
struct iobuf * io )
static

Takes all that is written, and throws it away.

Definition at line 22 of file zero.c.

References iobuf_skip(), iobuf::resid, and zerodev_write().

Referenced by zerodev_write().

Variable Documentation

◆ zerodev

struct dev zerodev
Initial value:
= {
.read = zerodev_read,
.write = zerodev_write,
.fops = {
.open = posix_file_open,
.read = posix_file_read,
.write = posix_file_write,
.close = posix_file_close,
.can_read = __vfs_can_always,
.can_write = __vfs_can_always,
.eof = __vfs_eof_never,
},
}
int posix_file_open(struct file *file)
Finishes opening a file: with O_TRUNC, a regular file is truncated to 0 bytes.
Definition open.c:17
int posix_file_close(struct file *file)
Closes an open file by dropping its reference to its vnode.
Definition close.c:15
ssize_t posix_file_read(struct file *file, struct iobuf *io)
Reads from an open file at its offset, and moves the offset past what was read.
Definition read.c:29
ssize_t posix_file_write(struct file *file, struct iobuf *io)
Writes to an open file at its offset, and moves the offset past what was written.
Definition write.c:25
static ssize_t zerodev_write(struct devid *dd, off_t offset, struct iobuf *io)
Takes all that is written, and throws it away.
Definition zero.c:22
static ssize_t zerodev_read(struct devid *dd, off_t offset, struct iobuf *io)
Fills the reader's buffer with zeros.
Definition zero.c:16

Definition at line 13 of file zero.c.

Referenced by memdev_mux().