diff --git a/wolfcrypt/src/random.c b/wolfcrypt/src/random.c index 7942caa0b..3d0a9e7fc 100644 --- a/wolfcrypt/src/random.c +++ b/wolfcrypt/src/random.c @@ -891,8 +891,9 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) #endif /* FREESCALE_K70_RNGA */ #elif defined(WOLFSSL_SAFERTOS) || defined(WOLFSSL_LEANPSK) \ - || defined(WOLFSSL_IAR_ARM) || defined(WOLFSSL_MDK_ARM) - + || defined(WOLFSSL_IAR_ARM) || defined(WOLFSSL_MDK_ARM) \ + || defined(WOLFSSL_uITRON4) || defined(WOLFSSL_uTKERNEL2) + #warning "write a real random seed!!!!, just for testing now" int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) diff --git a/wolfcrypt/src/wc_port.c b/wolfcrypt/src/wc_port.c index 515303479..f95b6ae33 100644 --- a/wolfcrypt/src/wc_port.c +++ b/wolfcrypt/src/wc_port.c @@ -387,6 +387,187 @@ int UnLockMutex(wolfSSL_Mutex *m) return 0; } + #elif defined(WOLFSSL_uITRON4) + #include "kernel.h" + int InitMutex(wolfSSL_Mutex* m) + { + int iReturn; + m->sem.sematr = TA_TFIFO ; + m->sem.isemcnt = 1 ; + m->sem.maxsem = 1 ; + m->sem.name = NULL ; + + m->id = acre_sem(&m->sem); + if( m->id != NULL ) + iReturn = 0; + else + iReturn = BAD_MUTEX_E; + + return iReturn; + } + + int FreeMutex(wolfSSL_Mutex* m) + { + del_sem( m->id ); + return 0; + } + + int LockMutex(wolfSSL_Mutex* m) + { + wai_sem(m->id); + return 0; + } + + int UnLockMutex(wolfSSL_Mutex* m) + { + sig_sem(m->id); + return 0; + } + + /**** uITRON malloc/free ***/ + static ID ID_wolfssl_MPOOL = 0 ; + static T_CMPL wolfssl_MPOOL = {TA_TFIFO, 0, NULL, "wolfSSL_MPOOL"}; + + int uITRON4_minit(size_t poolsz) { + ER ercd; + wolfssl_MPOOL.mplsz = poolsz ; + ercd = acre_mpl(&wolfssl_MPOOL); + if (ercd > 0) { + ID_wolfssl_MPOOL = ercd; + return 0; + } else { + return -1; + } + } + + void *uITRON4_malloc(size_t sz) { + ER ercd; + void *p ; + ercd = get_mpl(ID_wolfssl_MPOOL, sz, (VP)&p); + if (ercd == E_OK) { + return p; + } else { + return 0 ; + } + } + + void *uITRON4_realloc(void *p, size_t sz) { + ER ercd; + void *newp ; + if(p) { + ercd = get_mpl(ID_wolfssl_MPOOL, sz, (VP)&newp); + if (ercd == E_OK) { + memcpy(newp, p, sz) ; + ercd = rel_mpl(ID_wolfssl_MPOOL, (VP)p); + if (ercd == E_OK) { + return newp; + } + } + } + return 0 ; + } + + void uITRON4_free(void *p) { + ER ercd; + ercd = rel_mpl(ID_wolfssl_MPOOL, (VP)p); + if (ercd == E_OK) { + return ; + } else { + return ; + } + } + +#elif defined(WOLFSSL_uTKERNEL2) + #include "tk/tkernel.h" + int InitMutex(wolfSSL_Mutex* m) + { + int iReturn; + m->sem.sematr = TA_TFIFO ; + m->sem.isemcnt = 1 ; + m->sem.maxsem = 1 ; + + m->id = tk_cre_sem(&m->sem); + if( m->id != NULL ) + iReturn = 0; + else + iReturn = BAD_MUTEX_E; + + return iReturn; + } + + int FreeMutex(wolfSSL_Mutex* m) + { + tk_del_sem( m->id ); + return 0; + } + + int LockMutex(wolfSSL_Mutex* m) + { + tk_wai_sem(m->id, 1, TMO_FEVR); + return 0; + } + + int UnLockMutex(wolfSSL_Mutex* m) + { + tk_sig_sem(m->id, 1); + return 0; + } + + /**** uT-Kernel malloc/free ***/ + static ID ID_wolfssl_MPOOL = 0 ; + static T_CMPL wolfssl_MPOOL = + {(void *)NULL, + TA_TFIFO , 0, "wolfSSL_MPOOL"}; + + int uTKernel_init_mpool(unsigned int sz) { + ER ercd; + wolfssl_MPOOL.mplsz = sz ; + ercd = tk_cre_mpl(&wolfssl_MPOOL); + if (ercd > 0) { + ID_wolfssl_MPOOL = ercd; + return 0; + } else { + return -1; + } + } + + void *uTKernel_malloc(unsigned int sz) { + ER ercd; + void *p ; + ercd = tk_get_mpl(ID_wolfssl_MPOOL, sz, (VP)&p, TMO_FEVR); + if (ercd == E_OK) { + return p; + } else { + return 0 ; + } + } + + void *uTKernel_realloc(void *p, unsigned int sz) { + ER ercd; + void *newp ; + if(p) { + ercd = tk_get_mpl(ID_wolfssl_MPOOL, sz, (VP)&newp, TMO_FEVR); + if (ercd == E_OK) { + memcpy(newp, p, sz) ; + ercd = tk_rel_mpl(ID_wolfssl_MPOOL, (VP)p); + if (ercd == E_OK) { + return newp; + } + } + } + return 0 ; + } + + void uTKernel_free(void *p) { + ER ercd; + ercd = tk_rel_mpl(ID_wolfssl_MPOOL, (VP)p); + if (ercd == E_OK) { + return ; + } else { + return ; + } + } + #elif defined(WOLFSSL_MDK_ARM)|| defined(WOLFSSL_CMSIS_RTOS) #if defined(WOLFSSL_CMSIS_RTOS) @@ -442,7 +623,6 @@ int UnLockMutex(wolfSSL_Mutex *m) return 0; } #else - int InitMutex(wolfSSL_Mutex* m) { os_mut_init (m); @@ -467,5 +647,6 @@ int UnLockMutex(wolfSSL_Mutex *m) } #endif #endif /* USE_WINDOWS_API */ + #endif /* SINGLE_THREADED */ diff --git a/wolfssl/wolfcrypt/settings.h b/wolfssl/wolfcrypt/settings.h index 972a21507..5ae581cdf 100644 --- a/wolfssl/wolfcrypt/settings.h +++ b/wolfssl/wolfcrypt/settings.h @@ -99,6 +99,12 @@ /* Uncomment next line if building for PicoTCP demo bundle */ /* #define WOLFSSL_PICOTCP_DEMO */ +/* Uncomment next line if building for uITRON4 */ +/* #define WOLFSSL_uITRON4 */ + +/* Uncomment next line if building for uT-Kernel */ +/* #define WOLFSSL_uTKERNEL2 */ + #include #ifdef IPHONE @@ -644,7 +650,7 @@ #endif #endif /* MICRIUM */ - + #ifdef WOLFSSL_QL #ifndef WOLFSSL_SEP