task_create to pthread_create on nuttx for ch438

This commit is contained in:
wgzAIIT 2022-05-09 19:33:27 +08:00
parent ee132df28a
commit 8d6e9532cf
1 changed files with 29 additions and 24 deletions

View File

@ -26,7 +26,7 @@
/****************************************************************************
* Private Function Prototypes
****************************************************************************/
static int getInterruptStatus(int argc, char **argv);
static FAR void *getInterruptStatus(FAR void *arg);
static void CH438SetOutput(void);
static void CH438SetInput(void);
static uint8_t ReadCH438Data(uint8_t addr);
@ -109,26 +109,24 @@ static const struct file_operations g_ch438fops =
* thread task getInterruptStatus
*
****************************************************************************/
static int getInterruptStatus(int argc, char **argv)
static FAR void *getInterruptStatus(FAR void *arg)
{
uint8_t ext_uart_no = 0;
uint8_t i;
while(1)
{
pthread_mutex_lock(&mutex[ext_uart_no]);
gInterruptStatus = ReadCH438Data(REG_SSR_ADDR);
if(!gInterruptStatus)
{
pthread_mutex_unlock(&mutex[ext_uart_no]);
continue;
}
for(ext_uart_no = 0; ext_uart_no < CH438PORTNUM; ext_uart_no++)
for(i = 0; i < CH438PORTNUM; i++)
{
if(gInterruptStatus & Interruptnum[ext_uart_no])
if(gInterruptStatus & Interruptnum[i])
{
done[ext_uart_no] = true;
pthread_cond_signal(&cond[ext_uart_no]);
pthread_mutex_unlock(&mutex[ext_uart_no]);
pthread_mutex_lock(&mutex[i]);
done[i] = true;
pthread_cond_signal(&cond[i]);
pthread_mutex_unlock(&mutex[i]);
}
}
}
@ -548,6 +546,9 @@ static void Ch438InitDefault(void)
int ret = 0;
int i;
struct sched_param param;
pthread_attr_t attr;
pthread_t thread;
/* Initialize the mutex */
@ -570,7 +571,11 @@ static void Ch438InitDefault(void)
}
}
ret = task_create("ch438_task", 60, 8192, getInterruptStatus, NULL);
pthread_attr_init(&attr);
param.sched_priority = 60;
pthread_attr_setschedparam(&attr, &param);
pthread_attr_setstacksize(&attr, 2048);
ret = pthread_create(&thread, &attr, getInterruptStatus, NULL);
if (ret < 0)
{
ch438err("task create failed, status=%d\n", ret);