@@ -252,23 +252,14 @@ EXPORT_SYMBOL_GPL(relay_buf_full);
252
252
* High-level relay kernel API and associated functions.
253
253
*/
254
254
255
- /*
256
- * rchan_callback implementations defining default channel behavior. Used
257
- * in place of corresponding NULL values in client callback struct.
258
- */
259
-
260
- /*
261
- * subbuf_start() default callback. Does nothing.
262
- */
263
- static int subbuf_start_default_callback (struct rchan_buf * buf ,
264
- void * subbuf ,
265
- void * prev_subbuf ,
266
- size_t prev_padding )
255
+ static int relay_subbuf_start (struct rchan_buf * buf , void * subbuf ,
256
+ void * prev_subbuf , size_t prev_padding )
267
257
{
268
- if (relay_buf_full ( buf ) )
269
- return 0 ;
258
+ if (! buf -> chan -> cb -> subbuf_start )
259
+ return ! relay_buf_full ( buf ) ;
270
260
271
- return 1 ;
261
+ return buf -> chan -> cb -> subbuf_start (buf , subbuf ,
262
+ prev_subbuf , prev_padding );
272
263
}
273
264
274
265
/**
@@ -314,7 +305,7 @@ static void __relay_reset(struct rchan_buf *buf, unsigned int init)
314
305
for (i = 0 ; i < buf -> chan -> n_subbufs ; i ++ )
315
306
buf -> padding [i ] = 0 ;
316
307
317
- buf -> chan -> cb -> subbuf_start (buf , buf -> data , NULL , 0 );
308
+ relay_subbuf_start (buf , buf -> data , NULL , 0 );
318
309
}
319
310
320
311
/**
@@ -442,14 +433,6 @@ static void relay_close_buf(struct rchan_buf *buf)
442
433
kref_put (& buf -> kref , relay_remove_buf );
443
434
}
444
435
445
- static void setup_callbacks (struct rchan * chan ,
446
- struct rchan_callbacks * cb )
447
- {
448
- if (!cb -> subbuf_start )
449
- cb -> subbuf_start = subbuf_start_default_callback ;
450
- chan -> cb = cb ;
451
- }
452
-
453
436
int relay_prepare_cpu (unsigned int cpu )
454
437
{
455
438
struct rchan * chan ;
@@ -495,7 +478,7 @@ struct rchan *relay_open(const char *base_filename,
495
478
struct dentry * parent ,
496
479
size_t subbuf_size ,
497
480
size_t n_subbufs ,
498
- struct rchan_callbacks * cb ,
481
+ const struct rchan_callbacks * cb ,
499
482
void * private_data )
500
483
{
501
484
unsigned int i ;
@@ -529,7 +512,7 @@ struct rchan *relay_open(const char *base_filename,
529
512
chan -> has_base_filename = 1 ;
530
513
strlcpy (chan -> base_filename , base_filename , NAME_MAX );
531
514
}
532
- setup_callbacks ( chan , cb ) ;
515
+ chan -> cb = cb ;
533
516
kref_init (& chan -> kref );
534
517
535
518
mutex_lock (& relay_channels_mutex );
@@ -712,7 +695,7 @@ size_t relay_switch_subbuf(struct rchan_buf *buf, size_t length)
712
695
new_subbuf = buf -> subbufs_produced % buf -> chan -> n_subbufs ;
713
696
new = buf -> start + new_subbuf * buf -> chan -> subbuf_size ;
714
697
buf -> offset = 0 ;
715
- if (!buf -> chan -> cb -> subbuf_start (buf , new , old , buf -> prev_padding )) {
698
+ if (!relay_subbuf_start (buf , new , old , buf -> prev_padding )) {
716
699
buf -> offset = buf -> chan -> subbuf_size + 1 ;
717
700
return 0 ;
718
701
}
0 commit comments