@@ -22,6 +22,7 @@ K_PIPE_DEFINE(kpipe, PIPE_LEN, 4);
2222K_PIPE_DEFINE (khalfpipe , (PIPE_LEN / 2 ), 4 );
2323K_PIPE_DEFINE (kpipe1 , PIPE_LEN , 4 );
2424K_PIPE_DEFINE (pipe_test_alloc , PIPE_LEN , 4 );
25+ K_PIPE_DEFINE (ksmallpipe , 10 , 2 );
2526struct k_pipe pipe , pipe1 ;
2627
2728K_THREAD_STACK_DEFINE (tstack , STACK_SIZE );
@@ -140,8 +141,7 @@ static void tpipe_put_small_size(struct k_pipe *ppipe, k_timeout_t timeout)
140141
141142 for (int i = 0 ; i < PIPE_LEN ; i += wt_byte ) {
142143 /**TESTPOINT: pipe put*/
143- to_wt = (PIPE_LEN - i ) >= 24 ?
144- 24 : (PIPE_LEN - i );
144+ to_wt = 15 ;
145145 k_pipe_put (ppipe , & data [i ], to_wt , & wt_byte , 1 , timeout );
146146 }
147147}
@@ -154,8 +154,23 @@ static void tpipe_get_small_size(struct k_pipe *ppipe, k_timeout_t timeout)
154154 /*get pipe data from "pipe_put"*/
155155 for (int i = 0 ; i < PIPE_LEN ; i += rd_byte ) {
156156 /**TESTPOINT: pipe get*/
157- to_rd = (PIPE_LEN - i ) >= 24 ?
158- 24 : (PIPE_LEN - i );
157+ to_rd = 15 ;
158+ zassert_false (k_pipe_get (ppipe , & rx_data [i ], to_rd ,
159+ & rd_byte , 1 , timeout ), NULL );
160+ }
161+ }
162+
163+
164+ static void tpipe_get_large_size (struct k_pipe * ppipe , k_timeout_t timeout )
165+ {
166+ unsigned char rx_data [PIPE_LEN ];
167+ size_t to_rd , rd_byte = 0 ;
168+
169+ /*get pipe data from "pipe_put"*/
170+ for (int i = 0 ; i < PIPE_LEN ; i += rd_byte ) {
171+ /**TESTPOINT: pipe get*/
172+ to_rd = (PIPE_LEN - i ) >= 128 ?
173+ 128 : (PIPE_LEN - i );
159174 zassert_false (k_pipe_get (ppipe , & rx_data [i ], to_rd ,
160175 & rd_byte , 1 , timeout ), NULL );
161176 }
@@ -332,6 +347,16 @@ static void tThread_half_pipe_get(void *p1, void *p2, void *p3)
332347 */
333348void test_half_pipe_put_get (void )
334349{
350+ unsigned char rx_data [PIPE_LEN ];
351+ size_t rd_byte = 0 ;
352+ int ret ;
353+
354+ /* TESTPOINT: min_xfer > bytes_to_read */
355+ ret = k_pipe_put (& kpipe , & rx_data [0 ], 1 , & rd_byte , 24 , K_NO_WAIT );
356+ zassert_true (ret == - EINVAL , NULL );
357+ ret = k_pipe_put (& kpipe , & rx_data [0 ], 24 , NULL , 1 , K_NO_WAIT );
358+ zassert_true (ret == - EINVAL , NULL );
359+
335360 /**TESTPOINT: thread-thread data passing via pipe*/
336361 k_tid_t tid1 = k_thread_create (& tdata1 , tstack1 , STACK_SIZE ,
337362 tThread_half_pipe_get , & khalfpipe ,
@@ -382,6 +407,28 @@ void test_pipe_get_put(void)
382407 k_thread_abort (tid2 );
383408}
384409
410+ void test_pipe_get_large (void )
411+ {
412+ /**TESTPOINT: thread-thread data passing via pipe*/
413+ k_tid_t tid1 = k_thread_create (& tdata1 , tstack1 , STACK_SIZE ,
414+ tThread_half_pipe_put , & khalfpipe ,
415+ NULL , NULL , K_PRIO_PREEMPT (0 ),
416+ K_INHERIT_PERMS | K_USER , K_NO_WAIT );
417+
418+ k_tid_t tid2 = k_thread_create (& tdata2 , tstack2 , STACK_SIZE ,
419+ tThread_half_pipe_put , & khalfpipe ,
420+ NULL , NULL , K_PRIO_PREEMPT (0 ),
421+ K_INHERIT_PERMS | K_USER , K_NO_WAIT );
422+
423+ k_sleep (K_MSEC (100 ));
424+ tpipe_get_large_size (& khalfpipe , K_NO_WAIT );
425+
426+ /* clear the spawned thread avoid side effect */
427+ k_thread_abort (tid1 );
428+ k_thread_abort (tid2 );
429+ }
430+
431+
385432/**
386433 * @brief Test pending reader in pipe
387434 * @see k_pipe_put(), k_pipe_get()
0 commit comments