Modify osal functions

This commit is contained in:
xj 2024-08-27 04:33:02 -07:00
parent 24b1b5ac56
commit e7a92d9417
1 changed files with 40 additions and 2 deletions

View File

@ -93,6 +93,8 @@ usb_osal_mutex_t usb_osal_mutex_create(void){
mutex_id = semaphore_new(1);
printf("In %s, mutex_id = %d\n", __func__, mutex_id);
return (usb_osal_mutex_t)mutex_id;
}
@ -129,6 +131,7 @@ int usb_osal_mutex_give(usb_osal_mutex_t mutex){
semaphore_signal(mutex_id);
return 0;
}
@ -181,6 +184,8 @@ osal_msg_queue_t osal_mq_create(const char *name,
mq->msg_size = msg_size;
mq->max_msgs = max_msgs;
printf("In %s, msg_size = %d, max_msgs = %d\n", __func__, msg_size, max_msgs);
return mq;
}
@ -227,8 +232,10 @@ int osal_mq_send(osal_msg_queue_t mq,
tail = mq->tail;
header = mq->header;
printf("In %s, tail = %d, header = %d\n", __func__, tail, header);
/* message queue is full. */
tail_nxt = (tail + 1) > mq->max_msgs ? (tail + 1 -mq->max_msgs):(tail + 1);
tail_nxt = (tail + 1) > mq->max_msgs ? (tail + 1 - mq->max_msgs):(tail + 1);
if(tail_nxt == header){
usb_osal_sem_give(mq->mutex);
return 0;
@ -246,7 +253,7 @@ int osal_mq_send(osal_msg_queue_t mq,
int osal_mq_recv(osal_msg_queue_t mq,
int __osal_mq_recv(osal_msg_queue_t mq,
void *msg,
size_t msg_len,
uint32_t timeout){
@ -277,6 +284,8 @@ int osal_mq_recv(osal_msg_queue_t mq,
return 0;
}
printf("In %s, tail = %d, header = %d\n", __func__, tail, header);
msg_header = (osal_mq_msg_header_t)(mq->data + (sizeof(struct osal_mq_msg_header) + mq->msg_size) * header);
msg_buf = (uint8_t *)(msg_header + 1);
copy_len = (msg_header->len > msg_len ? msg_len : msg_header->len);
@ -290,6 +299,35 @@ int osal_mq_recv(osal_msg_queue_t mq,
return copy_len;
}
int osal_mq_recv(osal_msg_queue_t mq,
void *msg,
size_t msg_len,
uint32_t timeout){
int ret = 0;
int sleep_time = timeout;
int for_ever = 0;
if(sleep_time == 0)
for_ever = 1;
do{
ret = __osal_mq_recv(mq, msg, msg_len, timeout);
if(ret == 0){
if(sleep_time > 0 || for_ever == 1){
usb_osal_msleep(10);
if(for_ever == 0)
sleep_time -= 10;
}else{
break;
}
}
}while(ret == 0);
return ret;
}
usb_osal_mq_t usb_osal_mq_create(uint32_t max_msgs){