@@ -59,7 +59,11 @@ typedef AEEResult (*dspqueue_read_pfn_t)(dspqueue_t queue, uint32_t *flags,
5959 uint32_t max_message_length,
6060 uint32_t *message_length, uint8_t *message,
6161 uint32_t timeout_us);
62-
62+ typedef AEEResult (*dspqueue_read_noblock_pfn_t )(dspqueue_t queue, uint32_t *flags,
63+ uint32_t max_buffers, uint32_t *num_buffers,
64+ struct dspqueue_buffer *buffers,
65+ uint32_t max_message_length,
66+ uint32_t *message_length, uint8_t *message);
6367typedef int (*fastrpc_mmap_pfn_t )(int domain, int fd, void *addr, int offset, size_t length, enum fastrpc_map_flags flags);
6468typedef int (*fastrpc_munmap_pfn_t )(int domain, int fd, void *addr, size_t length);
6569
@@ -82,11 +86,12 @@ rpcmem_to_fd_pfn_t rpcmem_to_fd_pfn = nullptr;
8286fastrpc_mmap_pfn_t fastrpc_mmap_pfn = nullptr ;
8387fastrpc_munmap_pfn_t fastrpc_munmap_pfn = nullptr ;
8488
85- dspqueue_create_pfn_t dspqueue_create_pfn = nullptr ;
86- dspqueue_close_pfn_t dspqueue_close_pfn = nullptr ;
87- dspqueue_export_pfn_t dspqueue_export_pfn = nullptr ;
88- dspqueue_write_pfn_t dspqueue_write_pfn = nullptr ;
89- dspqueue_read_pfn_t dspqueue_read_pfn = nullptr ;
89+ dspqueue_create_pfn_t dspqueue_create_pfn = nullptr ;
90+ dspqueue_close_pfn_t dspqueue_close_pfn = nullptr ;
91+ dspqueue_export_pfn_t dspqueue_export_pfn = nullptr ;
92+ dspqueue_write_pfn_t dspqueue_write_pfn = nullptr ;
93+ dspqueue_read_pfn_t dspqueue_read_pfn = nullptr ;
94+ dspqueue_read_noblock_pfn_t dspqueue_read_noblock_pfn = nullptr ;
9095
9196remote_handle64_open_pfn_t remote_handle64_open_pfn = nullptr ;
9297remote_handle64_invoke_pfn_t remote_handle64_invoke_pfn = nullptr ;
@@ -167,6 +172,12 @@ AEEResult dspqueue_read(dspqueue_t queue,
167172 uint32_t * message_length,
168173 uint8_t * message,
169174 uint32_t timeout_us) {
175+ #ifdef _WIN32
176+ if (timeout_us == 0 ) {
177+ return dspqueue_read_noblock_pfn (queue, flags, max_buffers, num_buffers, buffers, max_message_length,
178+ message_length, message);
179+ }
180+ #endif
170181 return dspqueue_read_pfn (queue, flags, max_buffers, num_buffers, buffers, max_message_length, message_length,
171182 message, timeout_us);
172183}
@@ -349,6 +360,7 @@ int htpdrv_init() {
349360 dlsym (handle.get (), dspqueue_export_pfn_t , dspqueue_export_pfn, dspqueue_export, false );
350361 dlsym (handle.get (), dspqueue_write_pfn_t , dspqueue_write_pfn, dspqueue_write, false );
351362 dlsym (handle.get (), dspqueue_read_pfn_t , dspqueue_read_pfn, dspqueue_read, false );
363+ dlsym (handle.get (), dspqueue_read_noblock_pfn_t , dspqueue_read_noblock_pfn, dspqueue_read_noblock, false );
352364 dlsym (handle.get (), remote_handle64_open_pfn_t , remote_handle64_open_pfn, remote_handle64_open, false );
353365 dlsym (handle.get (), remote_handle64_invoke_pfn_t , remote_handle64_invoke_pfn, remote_handle64_invoke, false );
354366 dlsym (handle.get (), remote_handle_control_pfn_t , remote_handle_control_pfn, remote_handle_control, false );
0 commit comments