fsp 发表于 2024-3-10 14:55:37

nx_tcp_server_socket_listen

调用nx_tcp_server_socket_listen函数返回值是0x11.NX_CALLER_ERROR:(0x11) 此服务的调用方无效。 这是什么意思?

eric2013 发表于 2024-3-11 00:50:54

单步调试进去看下,主要是这几个在调用

/* Define several macros for the error checking shell in NetX.*/

#ifndef TX_TIMER_PROCESS_IN_ISR

#define NX_CALLER_CHECKING_EXTERNS          externTX_THREAD         *_tx_thread_current_ptr; \
                                          externTX_THREAD         _tx_timer_thread; \
                                          externvolatile ULONG      _tx_thread_system_state;

#define NX_THREADS_ONLY_CALLER_CHECKING   if ((TX_THREAD_GET_SYSTEM_STATE()) || \
                                                (_tx_thread_current_ptr == TX_NULL) || \
                                                (_tx_thread_current_ptr == &_tx_timer_thread)) \
                                                return(NX_CALLER_ERROR);

#define NX_INIT_AND_THREADS_CALLER_CHECKING if (((TX_THREAD_GET_SYSTEM_STATE()) && (TX_THREAD_GET_SYSTEM_STATE() < ((ULONG) 0xF0F0F0F0))) || \
                                                (_tx_thread_current_ptr == &_tx_timer_thread)) \
                                                return(NX_CALLER_ERROR);


#define NX_NOT_ISR_CALLER_CHECKING          if ((TX_THREAD_GET_SYSTEM_STATE()) && (TX_THREAD_GET_SYSTEM_STATE() < ((ULONG) 0xF0F0F0F0))) \
                                                return(NX_CALLER_ERROR);

#define NX_THREAD_WAIT_CALLER_CHECKING      if ((wait_option) && \
                                             ((_tx_thread_current_ptr == NX_NULL) || (TX_THREAD_GET_SYSTEM_STATE()) || (_tx_thread_current_ptr == &_tx_timer_thread))) \
                                          return(NX_CALLER_ERROR);

fsp 发表于 2024-3-11 10:05:40

eric2013 发表于 2024-3-11 00:50
单步调试进去看下,主要是这几个在调用

/* Define several macros for the error c ...

#define NX_THREADS_ONLY_CALLER_CHECKING   if ((TX_THREAD_GET_SYSTEM_STATE()) || \
                                                (_tx_thread_current_ptr == TX_NULL) || \
                                                (_tx_thread_current_ptr == &_tx_timer_thread)) \
                                                return(NX_CALLER_ERROR);
主要是这个函数返回0x11,请问这是为什么?

eric2013 发表于 2024-3-12 09:21:23

fsp 发表于 2024-3-11 10:05
#define NX_THREADS_ONLY_CALLER_CHECKING   if ((TX_THREAD_GET_SYSTEM_STATE()) || \
            ...

进一步锁定是if判断里面那个成立了,就锁定问题了。
页: [1]
查看完整版本: nx_tcp_server_socket_listen