GitOS
Operating system exercise
Loading...
Searching...
No Matches
disk_streamer.c File Reference
#include "disk_streamer.h"
#include <kernel.h>
#include "memory/heap/kheap.h"
#include "disk.h"
#include <stdbool.h>
#include <common/assert.h>

Functions

struct disk_streamdiskstreamer_new (int disk_id)
 Allocates and sets up new disk_stream struct.
 
int diskstreamer_seek (struct disk_stream *stream, int pos)
 Seeks into specified offset in stream.
 
int diskstreamer_read (struct disk_stream *stream, void *out, int total)
 Reads specified amount of bytes into buffer.
 
void diskstreamer_close (struct disk_stream *stream)
 Frees allocated disk_stream.
 

Function Documentation

◆ diskstreamer_close()

void diskstreamer_close ( struct disk_stream stream)

Frees allocated disk_stream.

Parameters
streamStream to close

References kfree().

◆ diskstreamer_new()

struct disk_stream * diskstreamer_new ( int  disk_id)

Allocates and sets up new disk_stream struct.

Parameters
disk_idDisk ID
Returns
struct disk_stream* Created struct

References disk_stream::disk, disk_get(), kzalloc(), and disk_stream::pos.

◆ diskstreamer_read()

int diskstreamer_read ( struct disk_stream stream,
void *  out,
int  total 
)

Reads specified amount of bytes into buffer.

Parameters
streamStream to read
outTarget buffer
totalTotal amount of bytes to read
Returns
int Status

References assert, disk_stream::disk, disk_read_block(), DISK_SECTOR_SIZE, offset, and disk_stream::pos.

◆ diskstreamer_seek()

int diskstreamer_seek ( struct disk_stream stream,
int  pos 
)

Seeks into specified offset in stream.

Parameters
streamStream to seek
posBytes from 0
Returns
int 0

References disk_stream::pos.