PatchworkOS
Loading...
Searching...
No Matches
shmem.c File Reference
#include <kernel/ipc/shmem.h>
#include <kernel/fs/ctl.h>
#include <kernel/fs/sysfs.h>
#include <kernel/fs/vfs.h>
#include <kernel/log/panic.h>
#include <kernel/mem/pmm.h>
#include <kernel/mem/vmm.h>
#include <kernel/proc/process.h>
#include <errno.h>
#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/list.h>

Go to the source code of this file.

Functions

static void shmem_object_free (shmem_object_t *shmem)
 
static shmem_object_tshmem_object_new (void)
 
static void shmem_vmm_callback (void *private)
 
static void * shmem_object_allocate_pages (shmem_object_t *shmem, uint64_t pageAmount, space_t *space, void *address, pml_flags_t flags)
 
static uint64_t shmem_open (file_t *file)
 
static void shmem_close (file_t *file)
 
static void * shmem_mmap (file_t *file, void *address, uint64_t length, uint64_t *offset, pml_flags_t flags)
 
void shmem_init (void)
 Initializes the shared memory subsystem.
 

Variables

static dentry_tshmemDir = NULL
 
static dentry_tnewFile = NULL
 
static file_ops_t fileOps
 

Function Documentation

◆ shmem_close()

static void shmem_close ( file_t file)
static

Definition at line 124 of file shmem.c.

References DEREF, file, NULL, and dentry_t::private.

◆ shmem_mmap()

◆ shmem_object_allocate_pages()

static void * shmem_object_allocate_pages ( shmem_object_t shmem,
uint64_t  pageAmount,
space_t space,
void *  address,
pml_flags_t  flags 
)
static

◆ shmem_object_free()

static void shmem_object_free ( shmem_object_t shmem)
static

Definition at line 21 of file shmem.c.

References assert, free(), NULL, shmem_object_t::pageAmount, shmem_object_t::pages, and pmm_free().

Referenced by shmem_object_new().

◆ shmem_object_new()

static shmem_object_t * shmem_object_new ( void  )
static

◆ shmem_open()

static uint64_t shmem_open ( file_t file)
static

Definition at line 112 of file shmem.c.

References ERR, file, NULL, dentry_t::private, and shmem_object_new().

◆ shmem_vmm_callback()

static void shmem_vmm_callback ( void *  private)
static

Definition at line 56 of file shmem.c.

References DEREF, and NULL.

Referenced by shmem_mmap(), and shmem_object_allocate_pages().

Variable Documentation

◆ fileOps

file_ops_t fileOps
static
Initial value:
= {
.open = shmem_open,
.close = shmem_close,
.mmap = shmem_mmap,
}
static void shmem_close(file_t *file)
Definition shmem.c:124
static uint64_t shmem_open(file_t *file)
Definition shmem.c:112
static void * shmem_mmap(file_t *file, void *address, uint64_t length, uint64_t *offset, pml_flags_t flags)
Definition shmem.c:135

Definition at line 190 of file shmem.c.

Referenced by shmem_init().

◆ newFile

dentry_t* newFile = NULL
static

Definition at line 19 of file shmem.c.

Referenced by shmem_init().

◆ shmemDir

dentry_t* shmemDir = NULL
static

Definition at line 18 of file shmem.c.

Referenced by shmem_init().