@@ -316,6 +316,39 @@ TEST_F(user, write_events) {
316
316
ASSERT_EQ (EINVAL , errno );
317
317
}
318
318
319
+ TEST_F (user , write_empty_events ) {
320
+ struct user_reg reg = {0 };
321
+ struct iovec io [1 ];
322
+ int before = 0 , after = 0 ;
323
+
324
+ reg .size = sizeof (reg );
325
+ reg .name_args = (__u64 )"__test_event" ;
326
+ reg .enable_bit = 31 ;
327
+ reg .enable_addr = (__u64 )& self -> check ;
328
+ reg .enable_size = sizeof (self -> check );
329
+
330
+ io [0 ].iov_base = & reg .write_index ;
331
+ io [0 ].iov_len = sizeof (reg .write_index );
332
+
333
+ /* Register should work */
334
+ ASSERT_EQ (0 , ioctl (self -> data_fd , DIAG_IOCSREG , & reg ));
335
+ ASSERT_EQ (0 , reg .write_index );
336
+ ASSERT_EQ (0 , self -> check );
337
+
338
+ /* Enable event */
339
+ self -> enable_fd = open (enable_file , O_RDWR );
340
+ ASSERT_NE (-1 , write (self -> enable_fd , "1" , sizeof ("1" )))
341
+
342
+ /* Event should now be enabled */
343
+ ASSERT_EQ (1 << reg .enable_bit , self -> check );
344
+
345
+ /* Write should make it out to ftrace buffers */
346
+ before = trace_bytes ();
347
+ ASSERT_NE (-1 , writev (self -> data_fd , (const struct iovec * )io , 1 ));
348
+ after = trace_bytes ();
349
+ ASSERT_GT (after , before );
350
+ }
351
+
319
352
TEST_F (user , write_fault ) {
320
353
struct user_reg reg = {0 };
321
354
struct iovec io [2 ];
0 commit comments