Working port of Little FS
This commit is contained in:
@ -7,13 +7,18 @@
|
||||
#include "storedev.h"
|
||||
#include "hal/hal.h"
|
||||
#include "util/util.h"
|
||||
#include "kprintf.h"
|
||||
|
||||
int32_t ramsd_init(struct StoreDev *sd, void *extra) {
|
||||
RamSdInitExtra *e = extra;
|
||||
sd->sd.ramsd.capacity = e->capacity;
|
||||
sd->sd.ramsd.buffer = dlmalloc(sd->sd.ramsd.capacity);
|
||||
if (sd->sd.ramsd.buffer == NULL) {
|
||||
return E_NOMEMORY;
|
||||
if (e->preallocbuffer != NULL) {
|
||||
sd->sd.ramsd.buffer = e->preallocbuffer;
|
||||
} else {
|
||||
sd->sd.ramsd.buffer = dlmalloc(sd->sd.ramsd.capacity);
|
||||
if (sd->sd.ramsd.buffer == NULL) {
|
||||
return E_NOMEMORY;
|
||||
}
|
||||
}
|
||||
return E_OK;
|
||||
}
|
||||
@ -36,4 +41,13 @@ int32_t ramsd_cleanup(struct StoreDev *sd) {
|
||||
spinlock_acquire(&sd->spinlock);
|
||||
dlfree(sd->sd.ramsd.buffer);
|
||||
spinlock_release(&sd->spinlock);
|
||||
return E_OK;
|
||||
}
|
||||
|
||||
size_t ramsd_capacity(struct StoreDev *sd) {
|
||||
size_t capacity;
|
||||
spinlock_acquire(&sd->spinlock);
|
||||
capacity = sd->sd.ramsd.capacity;
|
||||
spinlock_release(&sd->spinlock);
|
||||
return capacity;
|
||||
}
|
||||
|
Reference in New Issue
Block a user