mirror of
https://github.com/NeoFlock/neonucleus.git
synced 2026-02-15 04:03:49 +01:00
did stuff
This commit is contained in:
parent
a19dea513e
commit
c0d965be26
@ -89,7 +89,7 @@ int main() {
|
||||
|
||||
while(true) {
|
||||
nn_Exit e = nn_tick(c);
|
||||
if(e != NN_OK) {
|
||||
if(e != NN_OK && e != NN_EBUSY) {
|
||||
nn_setErrorFromExit(c, e);
|
||||
printf("error: %s\n", nn_getError(c));
|
||||
goto cleanup;
|
||||
|
||||
@ -1031,6 +1031,8 @@ nn_Exit nn_tick(nn_Computer *computer) {
|
||||
req.localState = computer->archState;
|
||||
req.action = NN_ARCH_TICK;
|
||||
err = computer->arch.handler(&req);
|
||||
// dont crash on EBUSY because it just means go again
|
||||
if(err == NN_EBUSY) return err;
|
||||
if(err) {
|
||||
computer->state = NN_CRASHED;
|
||||
nn_setErrorFromExit(computer, err);
|
||||
@ -1338,6 +1340,7 @@ void nn_resetCallBudget(nn_Computer *computer) {
|
||||
}
|
||||
|
||||
bool nn_componentsOverused(nn_Computer *computer) {
|
||||
if(computer->totalCallBudget == 0) return false;
|
||||
return computer->callBudget == 0;
|
||||
}
|
||||
|
||||
|
||||
@ -206,6 +206,8 @@ typedef enum nn_Exit {
|
||||
NN_EBADCALL,
|
||||
// bad state, the function was called at the wrong time
|
||||
NN_EBADSTATE,
|
||||
// resource busy. If the result of nn_call, you should call it again later.
|
||||
NN_EBUSY,
|
||||
} nn_Exit;
|
||||
|
||||
// This stores necessary data between computers
|
||||
@ -481,6 +483,7 @@ const char *nn_getComponentDoc(nn_Computer *computer, const char *address, const
|
||||
// this uses the call stack.
|
||||
// Component calls must not call other components, it just doesn't work.
|
||||
// The lack of an argument count is because the entire call stack is assumed to be the arguments.
|
||||
// In the case of NN_EBUSY, you should call it again with the same arguments later.
|
||||
nn_Exit nn_call(nn_Computer *computer, const char *address, const char *method);
|
||||
|
||||
// Sets the call budget.
|
||||
@ -501,7 +504,7 @@ size_t nn_callBudgetRemaining(nn_Computer *computer);
|
||||
void nn_resetCallBudget(nn_Computer *computer);
|
||||
|
||||
// returns whether there is no more call budget left.
|
||||
// At this point, the architecture should exit from a yield.
|
||||
// At this point, the architecture should exit with a yield.
|
||||
bool nn_componentsOverused(nn_Computer *computer);
|
||||
|
||||
// call stack operations.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user