mvm: Add state management groundwork

Signed-off-by: Chloe M. <chloe@mirocom.org>
This commit is contained in:
2026-05-24 17:08:15 -05:00
parent 921a7663b5
commit 2514893136
3 changed files with 95 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
/*
* Copyright (c) 2026 Mirocom Laboratories and MSP engineers.
* All Rights Reserved.
*/
#include <stdint.h>
#include <stddef.h>
#include <errno.h>
#include "mvm/state.h"
#include "mvm/common.h"
int
mvm_state_init(struct mvm_state *state)
{
if (state == NULL) {
errno = EINVAL;
return -1;
}
if (bus_ctl_init(&state->busctl) < 0) {
errno = EIO;
return -1;
}
if (mvm_rom_init(&state->bootrom, MVM_BOOTROM_SIZE) < 0) {
errno = EIO;
return -1;
}
return 0;
}
void
mvm_state_free(struct mvm_state *state)
{
if (state == NULL) {
return;
}
bus_ctl_free(&state->busctl);
mvm_rom_free(&state->bootrom);
}
+12
View File
@@ -0,0 +1,12 @@
/*
* Copyright (c) 2026 Mirocom Laboratories and MSP engineers.
* All Rights Reserved.
*/
#ifndef MVM_COMMON_H
#define MVM_COMMON_H 1
/* Maximum boot ROM capacity */
#define MVM_BOOTROM_SIZE 1024
#endif /* !MVM_COMMON_H */
+41
View File
@@ -0,0 +1,41 @@
/*
* Copyright (c) 2026 Mirocom Laboratories and MSP engineers.
* All Rights Reserved.
*/
#ifndef MVM_STATE_H
#define MVM_STATE_H 1
#include <stdint.h>
#include <stddef.h>
#include "mvm/rom.h"
#include "mvm/bus.h"
/*
* Represents the virtual machine state
*
* @busctl: Bus controller
* @bootrom: Boot rom
*/
struct mvm_state {
struct mvm_bus_ctl busctl;
struct mvm_rom bootrom;
};
/*
* Initialize the virtual machine state
*
* @state: State machine to initialize
*
* Returns zero on success
*/
int mvm_state_init(struct mvm_state *state);
/*
* Release a state and its associated resources from memory
*
* @state: State to deallocate.
*/
void mvm_state_free(struct mvm_state *state);
#endif /* !MVM_STATE_H */