Skip to content
Snippets Groups Projects

Use inter-core API for pycardium IO

Merged rahix requested to merge rahix/use-api into master
12 files
+ 449
11
Compare changes
  • Side-by-side
  • Inline
Files
12
+ 39
0
#include <stdlib.h>
#include "sema.h"
#include "api/caller.h"
void*_api_call_start(api_id_t id, uintptr_t size)
{
while (SEMA_GetSema(_API_SEMAPHORE) == E_BUSY) {}
/* TODO: Check flag */
API_CALL_MEM->id = id;
return API_CALL_MEM->buffer;
}
void*_api_call_transact(void*buffer)
{
API_CALL_MEM->call_flag = _API_FLAG_CALLING;
SEMA_FreeSema(_API_SEMAPHORE);
/* Notify the dispather of the new call */
__SEV();
__WFE();
while (1) {
/* Wait for the dispather to return */
__WFE();
while (SEMA_GetSema(_API_SEMAPHORE) == E_BUSY) {}
if (API_CALL_MEM->call_flag == _API_FLAG_RETURNED) {
break;
}
SEMA_FreeSema(_API_SEMAPHORE);
}
API_CALL_MEM->call_flag = _API_FLAG_IDLE;
SEMA_FreeSema(_API_SEMAPHORE);
return API_CALL_MEM->buffer;
}
Loading