Skip to content
Snippets Groups Projects

Use inter-core API for pycardium IO

12 files
+ 449
11
Compare changes
  • Side-by-side
  • Inline

Files

+ 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