@@ -203,12 +203,12 @@ unsigned long bitmap_find_next_zero_area_off(unsigned long *map,
203
203
* the bit offset of all zero areas this function finds is multiples of that
204
204
* power of 2. A @align_mask of 0 means no alignment is required.
205
205
*/
206
- static inline unsigned long
207
- bitmap_find_next_zero_area (unsigned long * map ,
208
- unsigned long size ,
209
- unsigned long start ,
210
- unsigned int nr ,
211
- unsigned long align_mask )
206
+ static __always_inline
207
+ unsigned long bitmap_find_next_zero_area (unsigned long * map ,
208
+ unsigned long size ,
209
+ unsigned long start ,
210
+ unsigned int nr ,
211
+ unsigned long align_mask )
212
212
{
213
213
return bitmap_find_next_zero_area_off (map , size , start , nr ,
214
214
align_mask , 0 );
@@ -228,7 +228,7 @@ void bitmap_fold(unsigned long *dst, const unsigned long *orig,
228
228
229
229
#define bitmap_size (nbits ) (ALIGN(nbits, BITS_PER_LONG) / BITS_PER_BYTE)
230
230
231
- static inline void bitmap_zero (unsigned long * dst , unsigned int nbits )
231
+ static __always_inline void bitmap_zero (unsigned long * dst , unsigned int nbits )
232
232
{
233
233
unsigned int len = bitmap_size (nbits );
234
234
@@ -238,7 +238,7 @@ static inline void bitmap_zero(unsigned long *dst, unsigned int nbits)
238
238
memset (dst , 0 , len );
239
239
}
240
240
241
- static inline void bitmap_fill (unsigned long * dst , unsigned int nbits )
241
+ static __always_inline void bitmap_fill (unsigned long * dst , unsigned int nbits )
242
242
{
243
243
unsigned int len = bitmap_size (nbits );
244
244
@@ -248,8 +248,8 @@ static inline void bitmap_fill(unsigned long *dst, unsigned int nbits)
248
248
memset (dst , 0xff , len );
249
249
}
250
250
251
- static inline void bitmap_copy ( unsigned long * dst , const unsigned long * src ,
252
- unsigned int nbits )
251
+ static __always_inline
252
+ void bitmap_copy ( unsigned long * dst , const unsigned long * src , unsigned int nbits )
253
253
{
254
254
unsigned int len = bitmap_size (nbits );
255
255
@@ -262,8 +262,8 @@ static inline void bitmap_copy(unsigned long *dst, const unsigned long *src,
262
262
/*
263
263
* Copy bitmap and clear tail bits in last word.
264
264
*/
265
- static inline void bitmap_copy_clear_tail ( unsigned long * dst ,
266
- const unsigned long * src , unsigned int nbits )
265
+ static __always_inline
266
+ void bitmap_copy_clear_tail ( unsigned long * dst , const unsigned long * src , unsigned int nbits )
267
267
{
268
268
bitmap_copy (dst , src , nbits );
269
269
if (nbits % BITS_PER_LONG )
@@ -306,42 +306,46 @@ void bitmap_to_arr64(u64 *buf, const unsigned long *bitmap, unsigned int nbits);
306
306
bitmap_copy_clear_tail((unsigned long *)(buf), (const unsigned long *)(bitmap), (nbits))
307
307
#endif
308
308
309
- static inline bool bitmap_and (unsigned long * dst , const unsigned long * src1 ,
310
- const unsigned long * src2 , unsigned int nbits )
309
+ static __always_inline
310
+ bool bitmap_and (unsigned long * dst , const unsigned long * src1 ,
311
+ const unsigned long * src2 , unsigned int nbits )
311
312
{
312
313
if (small_const_nbits (nbits ))
313
314
return (* dst = * src1 & * src2 & BITMAP_LAST_WORD_MASK (nbits )) != 0 ;
314
315
return __bitmap_and (dst , src1 , src2 , nbits );
315
316
}
316
317
317
- static inline void bitmap_or (unsigned long * dst , const unsigned long * src1 ,
318
- const unsigned long * src2 , unsigned int nbits )
318
+ static __always_inline
319
+ void bitmap_or (unsigned long * dst , const unsigned long * src1 ,
320
+ const unsigned long * src2 , unsigned int nbits )
319
321
{
320
322
if (small_const_nbits (nbits ))
321
323
* dst = * src1 | * src2 ;
322
324
else
323
325
__bitmap_or (dst , src1 , src2 , nbits );
324
326
}
325
327
326
- static inline void bitmap_xor (unsigned long * dst , const unsigned long * src1 ,
327
- const unsigned long * src2 , unsigned int nbits )
328
+ static __always_inline
329
+ void bitmap_xor (unsigned long * dst , const unsigned long * src1 ,
330
+ const unsigned long * src2 , unsigned int nbits )
328
331
{
329
332
if (small_const_nbits (nbits ))
330
333
* dst = * src1 ^ * src2 ;
331
334
else
332
335
__bitmap_xor (dst , src1 , src2 , nbits );
333
336
}
334
337
335
- static inline bool bitmap_andnot (unsigned long * dst , const unsigned long * src1 ,
336
- const unsigned long * src2 , unsigned int nbits )
338
+ static __always_inline
339
+ bool bitmap_andnot (unsigned long * dst , const unsigned long * src1 ,
340
+ const unsigned long * src2 , unsigned int nbits )
337
341
{
338
342
if (small_const_nbits (nbits ))
339
343
return (* dst = * src1 & ~(* src2 ) & BITMAP_LAST_WORD_MASK (nbits )) != 0 ;
340
344
return __bitmap_andnot (dst , src1 , src2 , nbits );
341
345
}
342
346
343
- static inline void bitmap_complement ( unsigned long * dst , const unsigned long * src ,
344
- unsigned int nbits )
347
+ static __always_inline
348
+ void bitmap_complement ( unsigned long * dst , const unsigned long * src , unsigned int nbits )
345
349
{
346
350
if (small_const_nbits (nbits ))
347
351
* dst = ~(* src );
@@ -356,8 +360,8 @@ static inline void bitmap_complement(unsigned long *dst, const unsigned long *sr
356
360
#endif
357
361
#define BITMAP_MEM_MASK (BITMAP_MEM_ALIGNMENT - 1)
358
362
359
- static inline bool bitmap_equal ( const unsigned long * src1 ,
360
- const unsigned long * src2 , unsigned int nbits )
363
+ static __always_inline
364
+ bool bitmap_equal ( const unsigned long * src1 , const unsigned long * src2 , unsigned int nbits )
361
365
{
362
366
if (small_const_nbits (nbits ))
363
367
return !((* src1 ^ * src2 ) & BITMAP_LAST_WORD_MASK (nbits ));
@@ -376,45 +380,45 @@ static inline bool bitmap_equal(const unsigned long *src1,
376
380
*
377
381
* Returns: True if (*@src1 | *@src2) == *@src3, false otherwise
378
382
*/
379
- static inline bool bitmap_or_equal (const unsigned long * src1 ,
380
- const unsigned long * src2 ,
381
- const unsigned long * src3 ,
382
- unsigned int nbits )
383
+ static __always_inline
384
+ bool bitmap_or_equal (const unsigned long * src1 , const unsigned long * src2 ,
385
+ const unsigned long * src3 , unsigned int nbits )
383
386
{
384
387
if (!small_const_nbits (nbits ))
385
388
return __bitmap_or_equal (src1 , src2 , src3 , nbits );
386
389
387
390
return !(((* src1 | * src2 ) ^ * src3 ) & BITMAP_LAST_WORD_MASK (nbits ));
388
391
}
389
392
390
- static inline bool bitmap_intersects (const unsigned long * src1 ,
391
- const unsigned long * src2 ,
392
- unsigned int nbits )
393
+ static __always_inline
394
+ bool bitmap_intersects (const unsigned long * src1 , const unsigned long * src2 , unsigned int nbits )
393
395
{
394
396
if (small_const_nbits (nbits ))
395
397
return ((* src1 & * src2 ) & BITMAP_LAST_WORD_MASK (nbits )) != 0 ;
396
398
else
397
399
return __bitmap_intersects (src1 , src2 , nbits );
398
400
}
399
401
400
- static inline bool bitmap_subset ( const unsigned long * src1 ,
401
- const unsigned long * src2 , unsigned int nbits )
402
+ static __always_inline
403
+ bool bitmap_subset ( const unsigned long * src1 , const unsigned long * src2 , unsigned int nbits )
402
404
{
403
405
if (small_const_nbits (nbits ))
404
406
return ! ((* src1 & ~(* src2 )) & BITMAP_LAST_WORD_MASK (nbits ));
405
407
else
406
408
return __bitmap_subset (src1 , src2 , nbits );
407
409
}
408
410
409
- static inline bool bitmap_empty (const unsigned long * src , unsigned nbits )
411
+ static __always_inline
412
+ bool bitmap_empty (const unsigned long * src , unsigned nbits )
410
413
{
411
414
if (small_const_nbits (nbits ))
412
415
return ! (* src & BITMAP_LAST_WORD_MASK (nbits ));
413
416
414
417
return find_first_bit (src , nbits ) == nbits ;
415
418
}
416
419
417
- static inline bool bitmap_full (const unsigned long * src , unsigned int nbits )
420
+ static __always_inline
421
+ bool bitmap_full (const unsigned long * src , unsigned int nbits )
418
422
{
419
423
if (small_const_nbits (nbits ))
420
424
return ! (~(* src ) & BITMAP_LAST_WORD_MASK (nbits ));
@@ -448,8 +452,8 @@ unsigned long bitmap_weight_andnot(const unsigned long *src1,
448
452
return __bitmap_weight_andnot (src1 , src2 , nbits );
449
453
}
450
454
451
- static __always_inline void bitmap_set ( unsigned long * map , unsigned int start ,
452
- unsigned int nbits )
455
+ static __always_inline
456
+ void bitmap_set ( unsigned long * map , unsigned int start , unsigned int nbits )
453
457
{
454
458
if (__builtin_constant_p (nbits ) && nbits == 1 )
455
459
__set_bit (start , map );
@@ -464,8 +468,8 @@ static __always_inline void bitmap_set(unsigned long *map, unsigned int start,
464
468
__bitmap_set (map , start , nbits );
465
469
}
466
470
467
- static __always_inline void bitmap_clear ( unsigned long * map , unsigned int start ,
468
- unsigned int nbits )
471
+ static __always_inline
472
+ void bitmap_clear ( unsigned long * map , unsigned int start , unsigned int nbits )
469
473
{
470
474
if (__builtin_constant_p (nbits ) && nbits == 1 )
471
475
__clear_bit (start , map );
@@ -480,29 +484,32 @@ static __always_inline void bitmap_clear(unsigned long *map, unsigned int start,
480
484
__bitmap_clear (map , start , nbits );
481
485
}
482
486
483
- static inline void bitmap_shift_right (unsigned long * dst , const unsigned long * src ,
484
- unsigned int shift , unsigned int nbits )
487
+ static __always_inline
488
+ void bitmap_shift_right (unsigned long * dst , const unsigned long * src ,
489
+ unsigned int shift , unsigned int nbits )
485
490
{
486
491
if (small_const_nbits (nbits ))
487
492
* dst = (* src & BITMAP_LAST_WORD_MASK (nbits )) >> shift ;
488
493
else
489
494
__bitmap_shift_right (dst , src , shift , nbits );
490
495
}
491
496
492
- static inline void bitmap_shift_left (unsigned long * dst , const unsigned long * src ,
493
- unsigned int shift , unsigned int nbits )
497
+ static __always_inline
498
+ void bitmap_shift_left (unsigned long * dst , const unsigned long * src ,
499
+ unsigned int shift , unsigned int nbits )
494
500
{
495
501
if (small_const_nbits (nbits ))
496
502
* dst = (* src << shift ) & BITMAP_LAST_WORD_MASK (nbits );
497
503
else
498
504
__bitmap_shift_left (dst , src , shift , nbits );
499
505
}
500
506
501
- static inline void bitmap_replace (unsigned long * dst ,
502
- const unsigned long * old ,
503
- const unsigned long * new ,
504
- const unsigned long * mask ,
505
- unsigned int nbits )
507
+ static __always_inline
508
+ void bitmap_replace (unsigned long * dst ,
509
+ const unsigned long * old ,
510
+ const unsigned long * new ,
511
+ const unsigned long * mask ,
512
+ unsigned int nbits )
506
513
{
507
514
if (small_const_nbits (nbits ))
508
515
* dst = (* old & ~(* mask )) | (* new & * mask );
@@ -545,8 +552,9 @@ static inline void bitmap_replace(unsigned long *dst,
545
552
* bitmap_gather() can be seen as the 'reverse' bitmap_scatter() operation.
546
553
* See bitmap_scatter() for details related to this relationship.
547
554
*/
548
- static inline void bitmap_scatter (unsigned long * dst , const unsigned long * src ,
549
- const unsigned long * mask , unsigned int nbits )
555
+ static __always_inline
556
+ void bitmap_scatter (unsigned long * dst , const unsigned long * src ,
557
+ const unsigned long * mask , unsigned int nbits )
550
558
{
551
559
unsigned int n = 0 ;
552
560
unsigned int bit ;
@@ -599,8 +607,9 @@ static inline void bitmap_scatter(unsigned long *dst, const unsigned long *src,
599
607
* bitmap_scatter(res, src, mask, n) and a call to
600
608
* bitmap_scatter(res, result, mask, n) will lead to the same res value.
601
609
*/
602
- static inline void bitmap_gather (unsigned long * dst , const unsigned long * src ,
603
- const unsigned long * mask , unsigned int nbits )
610
+ static __always_inline
611
+ void bitmap_gather (unsigned long * dst , const unsigned long * src ,
612
+ const unsigned long * mask , unsigned int nbits )
604
613
{
605
614
unsigned int n = 0 ;
606
615
unsigned int bit ;
@@ -611,9 +620,9 @@ static inline void bitmap_gather(unsigned long *dst, const unsigned long *src,
611
620
__assign_bit (n ++ , dst , test_bit (bit , src ));
612
621
}
613
622
614
- static inline void bitmap_next_set_region ( unsigned long * bitmap ,
615
- unsigned int * rs , unsigned int * re ,
616
- unsigned int end )
623
+ static __always_inline
624
+ void bitmap_next_set_region ( unsigned long * bitmap , unsigned int * rs ,
625
+ unsigned int * re , unsigned int end )
617
626
{
618
627
* rs = find_next_bit (bitmap , end , * rs );
619
628
* re = find_next_zero_bit (bitmap , end , * rs + 1 );
@@ -628,7 +637,8 @@ static inline void bitmap_next_set_region(unsigned long *bitmap,
628
637
* This is the complement to __bitmap_find_free_region() and releases
629
638
* the found region (by clearing it in the bitmap).
630
639
*/
631
- static inline void bitmap_release_region (unsigned long * bitmap , unsigned int pos , int order )
640
+ static __always_inline
641
+ void bitmap_release_region (unsigned long * bitmap , unsigned int pos , int order )
632
642
{
633
643
bitmap_clear (bitmap , pos , BIT (order ));
634
644
}
@@ -644,7 +654,8 @@ static inline void bitmap_release_region(unsigned long *bitmap, unsigned int pos
644
654
* Returns: 0 on success, or %-EBUSY if specified region wasn't
645
655
* free (not all bits were zero).
646
656
*/
647
- static inline int bitmap_allocate_region (unsigned long * bitmap , unsigned int pos , int order )
657
+ static __always_inline
658
+ int bitmap_allocate_region (unsigned long * bitmap , unsigned int pos , int order )
648
659
{
649
660
unsigned int len = BIT (order );
650
661
@@ -668,7 +679,8 @@ static inline int bitmap_allocate_region(unsigned long *bitmap, unsigned int pos
668
679
* Returns: the bit offset in bitmap of the allocated region,
669
680
* or -errno on failure.
670
681
*/
671
- static inline int bitmap_find_free_region (unsigned long * bitmap , unsigned int bits , int order )
682
+ static __always_inline
683
+ int bitmap_find_free_region (unsigned long * bitmap , unsigned int bits , int order )
672
684
{
673
685
unsigned int pos , end ; /* scans bitmap by regions of size order */
674
686
@@ -722,7 +734,7 @@ static inline int bitmap_find_free_region(unsigned long *bitmap, unsigned int bi
722
734
* That is ``(u32 *)(&val)[0]`` gets the upper 32 bits,
723
735
* but we expect the lower 32-bits of u64.
724
736
*/
725
- static inline void bitmap_from_u64 (unsigned long * dst , u64 mask )
737
+ static __always_inline void bitmap_from_u64 (unsigned long * dst , u64 mask )
726
738
{
727
739
bitmap_from_arr64 (dst , & mask , 64 );
728
740
}
@@ -737,9 +749,8 @@ static inline void bitmap_from_u64(unsigned long *dst, u64 mask)
737
749
* @map memory region. For @nbits = 0 and @nbits > BITS_PER_LONG the return
738
750
* value is undefined.
739
751
*/
740
- static inline unsigned long bitmap_read (const unsigned long * map ,
741
- unsigned long start ,
742
- unsigned long nbits )
752
+ static __always_inline
753
+ unsigned long bitmap_read (const unsigned long * map , unsigned long start , unsigned long nbits )
743
754
{
744
755
size_t index = BIT_WORD (start );
745
756
unsigned long offset = start % BITS_PER_LONG ;
@@ -772,8 +783,9 @@ static inline unsigned long bitmap_read(const unsigned long *map,
772
783
*
773
784
* For @nbits == 0 and @nbits > BITS_PER_LONG no writes are performed.
774
785
*/
775
- static inline void bitmap_write (unsigned long * map , unsigned long value ,
776
- unsigned long start , unsigned long nbits )
786
+ static __always_inline
787
+ void bitmap_write (unsigned long * map , unsigned long value ,
788
+ unsigned long start , unsigned long nbits )
777
789
{
778
790
size_t index ;
779
791
unsigned long offset ;
0 commit comments