105 if ((
size_t)length >=
sizeof(
string))
210 LOG_INFO(
"new framebuffer device `%s` with id '%s'\n",
fb->
name,
id);
#define MAX_NAME
Maximum length of names.
#define assert(expression)
EFI_PHYSICAL_ADDRESS buffer
static atomic_uint64_t newId
static void * fb_data_mmap(file_t *file, void *addr, size_t length, size_t *offset, pml_flags_t flags)
static size_t fb_name_read(file_t *file, void *buffer, size_t count, size_t *offset)
static size_t fb_info_read(file_t *file, void *buffer, size_t count, size_t *offset)
static file_ops_t dataOps
static file_ops_t nameOps
static file_ops_t infoOps
static size_t fb_data_read(file_t *file, void *buffer, size_t count, size_t *offset)
static vnode_ops_t dirVnodeOps
static size_t fb_data_write(file_t *file, const void *buffer, size_t count, size_t *offset)
static void fb_dir_cleanup(vnode_t *vnode)
fb_t * fb_new(const char *name, const fb_ops_t *ops, void *data)
Allocate and initialize a new framebuffer.
void fb_free(fb_t *fb)
Frees a framebuffer.
uint64_t devfs_files_new(list_t *out, dentry_t *parent, const devfs_file_desc_t *descs)
Create multiple files in a devfs directory.
void devfs_files_free(list_t *files)
Free all files in a list created by devfs_files_new().
dentry_t * devfs_dir_new(dentry_t *parent, const char *name, const vnode_ops_t *vnodeOps, void *data)
Create a new directory inside a mounted devfs instance.
#define LOG_INFO(format,...)
#define UNREF(ptr)
Decrement reference count.
#define BUFFER_READ(buffer, count, offset, src, size)
Helper macros for implementing file operations dealing with simple buffers.
#define EINVAL
Invalid argument.
#define ENOMEM
Out of memory.
#define EOVERFLOW
Value too large for defined data type.
#define errno
Error number variable.
static void list_init(list_t *list)
Initializes a list.
#define NULL
Pointer error value.
#define ERR
Integer error value.
static const path_flag_t flags[]
#define ATOMIC_VAR_INIT(value)
#define atomic_fetch_add(object, operand)
_PUBLIC int snprintf(char *_RESTRICT s, size_t n, const char *_RESTRICT format,...)
_PUBLIC void * malloc(size_t size)
_PUBLIC void free(void *ptr)
_PUBLIC char * strncpy(char *_RESTRICT s1, const char *_RESTRICT s2, size_t n)
_PUBLIC size_t strlen(const char *s)
Directory entry structure.
Descriptor for batch file creation.
size_t(* write)(fb_t *fb, const void *buffer, size_t count, size_t *offset)
void(* cleanup)(fb_t *fb)
size_t(* read)(fb_t *fb, void *buffer, size_t count, size_t *offset)
void *(* mmap)(fb_t *fb, void *address, size_t length, size_t *offset, pml_flags_t flags)
uint64_t(* info)(fb_t *fb, fb_info_t *info)
File operations structure.
size_t(* read)(file_t *file, void *buffer, size_t count, size_t *offset)
A entry in a page table without a specified address or callback ID.
vnode operations structure.
void(* cleanup)(vnode_t *vnode)
Cleanup function called when the vnode is being freed.
void * data
Filesystem defined data.