diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/percpu-defs.h | 1 | ||||
-rw-r--r-- | include/linux/percpu.h | 48 |
2 files changed, 25 insertions, 24 deletions
diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h index 9bd03193ecd4..5a5d6ce4bd55 100644 --- a/include/linux/percpu-defs.h +++ b/include/linux/percpu-defs.h | |||
@@ -60,6 +60,7 @@ | |||
60 | 60 | ||
61 | #define DEFINE_PER_CPU_SECTION(type, name, sec) \ | 61 | #define DEFINE_PER_CPU_SECTION(type, name, sec) \ |
62 | __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \ | 62 | __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \ |
63 | extern __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \ | ||
63 | __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \ | 64 | __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \ |
64 | __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES __weak \ | 65 | __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES __weak \ |
65 | __typeof__(type) per_cpu__##name | 66 | __typeof__(type) per_cpu__##name |
diff --git a/include/linux/percpu.h b/include/linux/percpu.h index 519d6876590f..522f421ec213 100644 --- a/include/linux/percpu.h +++ b/include/linux/percpu.h | |||
@@ -226,20 +226,20 @@ do { \ | |||
226 | 226 | ||
227 | extern void __bad_size_call_parameter(void); | 227 | extern void __bad_size_call_parameter(void); |
228 | 228 | ||
229 | #define __size_call_return(stem, variable) \ | 229 | #define __pcpu_size_call_return(stem, variable) \ |
230 | ({ typeof(variable) ret__; \ | 230 | ({ typeof(variable) pscr_ret__; \ |
231 | switch(sizeof(variable)) { \ | 231 | switch(sizeof(variable)) { \ |
232 | case 1: ret__ = stem##1(variable);break; \ | 232 | case 1: pscr_ret__ = stem##1(variable);break; \ |
233 | case 2: ret__ = stem##2(variable);break; \ | 233 | case 2: pscr_ret__ = stem##2(variable);break; \ |
234 | case 4: ret__ = stem##4(variable);break; \ | 234 | case 4: pscr_ret__ = stem##4(variable);break; \ |
235 | case 8: ret__ = stem##8(variable);break; \ | 235 | case 8: pscr_ret__ = stem##8(variable);break; \ |
236 | default: \ | 236 | default: \ |
237 | __bad_size_call_parameter();break; \ | 237 | __bad_size_call_parameter();break; \ |
238 | } \ | 238 | } \ |
239 | ret__; \ | 239 | pscr_ret__; \ |
240 | }) | 240 | }) |
241 | 241 | ||
242 | #define __size_call(stem, variable, ...) \ | 242 | #define __pcpu_size_call(stem, variable, ...) \ |
243 | do { \ | 243 | do { \ |
244 | switch(sizeof(variable)) { \ | 244 | switch(sizeof(variable)) { \ |
245 | case 1: stem##1(variable, __VA_ARGS__);break; \ | 245 | case 1: stem##1(variable, __VA_ARGS__);break; \ |
@@ -299,7 +299,7 @@ do { \ | |||
299 | # ifndef this_cpu_read_8 | 299 | # ifndef this_cpu_read_8 |
300 | # define this_cpu_read_8(pcp) _this_cpu_generic_read(pcp) | 300 | # define this_cpu_read_8(pcp) _this_cpu_generic_read(pcp) |
301 | # endif | 301 | # endif |
302 | # define this_cpu_read(pcp) __size_call_return(this_cpu_read_, (pcp)) | 302 | # define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, (pcp)) |
303 | #endif | 303 | #endif |
304 | 304 | ||
305 | #define _this_cpu_generic_to_op(pcp, val, op) \ | 305 | #define _this_cpu_generic_to_op(pcp, val, op) \ |
@@ -322,7 +322,7 @@ do { \ | |||
322 | # ifndef this_cpu_write_8 | 322 | # ifndef this_cpu_write_8 |
323 | # define this_cpu_write_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), =) | 323 | # define this_cpu_write_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), =) |
324 | # endif | 324 | # endif |
325 | # define this_cpu_write(pcp, val) __size_call(this_cpu_write_, (pcp), (val)) | 325 | # define this_cpu_write(pcp, val) __pcpu_size_call(this_cpu_write_, (pcp), (val)) |
326 | #endif | 326 | #endif |
327 | 327 | ||
328 | #ifndef this_cpu_add | 328 | #ifndef this_cpu_add |
@@ -338,7 +338,7 @@ do { \ | |||
338 | # ifndef this_cpu_add_8 | 338 | # ifndef this_cpu_add_8 |
339 | # define this_cpu_add_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), +=) | 339 | # define this_cpu_add_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), +=) |
340 | # endif | 340 | # endif |
341 | # define this_cpu_add(pcp, val) __size_call(this_cpu_add_, (pcp), (val)) | 341 | # define this_cpu_add(pcp, val) __pcpu_size_call(this_cpu_add_, (pcp), (val)) |
342 | #endif | 342 | #endif |
343 | 343 | ||
344 | #ifndef this_cpu_sub | 344 | #ifndef this_cpu_sub |
@@ -366,7 +366,7 @@ do { \ | |||
366 | # ifndef this_cpu_and_8 | 366 | # ifndef this_cpu_and_8 |
367 | # define this_cpu_and_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), &=) | 367 | # define this_cpu_and_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), &=) |
368 | # endif | 368 | # endif |
369 | # define this_cpu_and(pcp, val) __size_call(this_cpu_and_, (pcp), (val)) | 369 | # define this_cpu_and(pcp, val) __pcpu_size_call(this_cpu_and_, (pcp), (val)) |
370 | #endif | 370 | #endif |
371 | 371 | ||
372 | #ifndef this_cpu_or | 372 | #ifndef this_cpu_or |
@@ -382,7 +382,7 @@ do { \ | |||
382 | # ifndef this_cpu_or_8 | 382 | # ifndef this_cpu_or_8 |
383 | # define this_cpu_or_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), |=) | 383 | # define this_cpu_or_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), |=) |
384 | # endif | 384 | # endif |
385 | # define this_cpu_or(pcp, val) __size_call(this_cpu_or_, (pcp), (val)) | 385 | # define this_cpu_or(pcp, val) __pcpu_size_call(this_cpu_or_, (pcp), (val)) |
386 | #endif | 386 | #endif |
387 | 387 | ||
388 | #ifndef this_cpu_xor | 388 | #ifndef this_cpu_xor |
@@ -398,7 +398,7 @@ do { \ | |||
398 | # ifndef this_cpu_xor_8 | 398 | # ifndef this_cpu_xor_8 |
399 | # define this_cpu_xor_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), ^=) | 399 | # define this_cpu_xor_8(pcp, val) _this_cpu_generic_to_op((pcp), (val), ^=) |
400 | # endif | 400 | # endif |
401 | # define this_cpu_xor(pcp, val) __size_call(this_cpu_or_, (pcp), (val)) | 401 | # define this_cpu_xor(pcp, val) __pcpu_size_call(this_cpu_or_, (pcp), (val)) |
402 | #endif | 402 | #endif |
403 | 403 | ||
404 | /* | 404 | /* |
@@ -428,7 +428,7 @@ do { \ | |||
428 | # ifndef __this_cpu_read_8 | 428 | # ifndef __this_cpu_read_8 |
429 | # define __this_cpu_read_8(pcp) (*__this_cpu_ptr(&(pcp))) | 429 | # define __this_cpu_read_8(pcp) (*__this_cpu_ptr(&(pcp))) |
430 | # endif | 430 | # endif |
431 | # define __this_cpu_read(pcp) __size_call_return(__this_cpu_read_, (pcp)) | 431 | # define __this_cpu_read(pcp) __pcpu_size_call_return(__this_cpu_read_, (pcp)) |
432 | #endif | 432 | #endif |
433 | 433 | ||
434 | #define __this_cpu_generic_to_op(pcp, val, op) \ | 434 | #define __this_cpu_generic_to_op(pcp, val, op) \ |
@@ -449,7 +449,7 @@ do { \ | |||
449 | # ifndef __this_cpu_write_8 | 449 | # ifndef __this_cpu_write_8 |
450 | # define __this_cpu_write_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), =) | 450 | # define __this_cpu_write_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), =) |
451 | # endif | 451 | # endif |
452 | # define __this_cpu_write(pcp, val) __size_call(__this_cpu_write_, (pcp), (val)) | 452 | # define __this_cpu_write(pcp, val) __pcpu_size_call(__this_cpu_write_, (pcp), (val)) |
453 | #endif | 453 | #endif |
454 | 454 | ||
455 | #ifndef __this_cpu_add | 455 | #ifndef __this_cpu_add |
@@ -465,7 +465,7 @@ do { \ | |||
465 | # ifndef __this_cpu_add_8 | 465 | # ifndef __this_cpu_add_8 |
466 | # define __this_cpu_add_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), +=) | 466 | # define __this_cpu_add_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), +=) |
467 | # endif | 467 | # endif |
468 | # define __this_cpu_add(pcp, val) __size_call(__this_cpu_add_, (pcp), (val)) | 468 | # define __this_cpu_add(pcp, val) __pcpu_size_call(__this_cpu_add_, (pcp), (val)) |
469 | #endif | 469 | #endif |
470 | 470 | ||
471 | #ifndef __this_cpu_sub | 471 | #ifndef __this_cpu_sub |
@@ -493,7 +493,7 @@ do { \ | |||
493 | # ifndef __this_cpu_and_8 | 493 | # ifndef __this_cpu_and_8 |
494 | # define __this_cpu_and_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), &=) | 494 | # define __this_cpu_and_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), &=) |
495 | # endif | 495 | # endif |
496 | # define __this_cpu_and(pcp, val) __size_call(__this_cpu_and_, (pcp), (val)) | 496 | # define __this_cpu_and(pcp, val) __pcpu_size_call(__this_cpu_and_, (pcp), (val)) |
497 | #endif | 497 | #endif |
498 | 498 | ||
499 | #ifndef __this_cpu_or | 499 | #ifndef __this_cpu_or |
@@ -509,7 +509,7 @@ do { \ | |||
509 | # ifndef __this_cpu_or_8 | 509 | # ifndef __this_cpu_or_8 |
510 | # define __this_cpu_or_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), |=) | 510 | # define __this_cpu_or_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), |=) |
511 | # endif | 511 | # endif |
512 | # define __this_cpu_or(pcp, val) __size_call(__this_cpu_or_, (pcp), (val)) | 512 | # define __this_cpu_or(pcp, val) __pcpu_size_call(__this_cpu_or_, (pcp), (val)) |
513 | #endif | 513 | #endif |
514 | 514 | ||
515 | #ifndef __this_cpu_xor | 515 | #ifndef __this_cpu_xor |
@@ -525,7 +525,7 @@ do { \ | |||
525 | # ifndef __this_cpu_xor_8 | 525 | # ifndef __this_cpu_xor_8 |
526 | # define __this_cpu_xor_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), ^=) | 526 | # define __this_cpu_xor_8(pcp, val) __this_cpu_generic_to_op((pcp), (val), ^=) |
527 | # endif | 527 | # endif |
528 | # define __this_cpu_xor(pcp, val) __size_call(__this_cpu_xor_, (pcp), (val)) | 528 | # define __this_cpu_xor(pcp, val) __pcpu_size_call(__this_cpu_xor_, (pcp), (val)) |
529 | #endif | 529 | #endif |
530 | 530 | ||
531 | /* | 531 | /* |
@@ -556,7 +556,7 @@ do { \ | |||
556 | # ifndef irqsafe_cpu_add_8 | 556 | # ifndef irqsafe_cpu_add_8 |
557 | # define irqsafe_cpu_add_8(pcp, val) irqsafe_cpu_generic_to_op((pcp), (val), +=) | 557 | # define irqsafe_cpu_add_8(pcp, val) irqsafe_cpu_generic_to_op((pcp), (val), +=) |
558 | # endif | 558 | # endif |
559 | # define irqsafe_cpu_add(pcp, val) __size_call(irqsafe_cpu_add_, (pcp), (val)) | 559 | # define irqsafe_cpu_add(pcp, val) __pcpu_size_call(irqsafe_cpu_add_, (pcp), (val)) |
560 | #endif | 560 | #endif |
561 | 561 | ||
562 | #ifndef irqsafe_cpu_sub | 562 | #ifndef irqsafe_cpu_sub |
@@ -584,7 +584,7 @@ do { \ | |||
584 | # ifndef irqsafe_cpu_and_8 | 584 | # ifndef irqsafe_cpu_and_8 |
585 | # define irqsafe_cpu_and_8(pcp, val) irqsafe_cpu_generic_to_op((pcp), (val), &=) | 585 | # define irqsafe_cpu_and_8(pcp, val) irqsafe_cpu_generic_to_op((pcp), (val), &=) |
586 | # endif | 586 | # endif |
587 | # define irqsafe_cpu_and(pcp, val) __size_call(irqsafe_cpu_and_, (val)) | 587 | # define irqsafe_cpu_and(pcp, val) __pcpu_size_call(irqsafe_cpu_and_, (val)) |
588 | #endif | 588 | #endif |
589 | 589 | ||
590 | #ifndef irqsafe_cpu_or | 590 | #ifndef irqsafe_cpu_or |
@@ -600,7 +600,7 @@ do { \ | |||
600 | # ifndef irqsafe_cpu_or_8 | 600 | # ifndef irqsafe_cpu_or_8 |
601 | # define irqsafe_cpu_or_8(pcp, val) irqsafe_cpu_generic_to_op((pcp), (val), |=) | 601 | # define irqsafe_cpu_or_8(pcp, val) irqsafe_cpu_generic_to_op((pcp), (val), |=) |
602 | # endif | 602 | # endif |
603 | # define irqsafe_cpu_or(pcp, val) __size_call(irqsafe_cpu_or_, (val)) | 603 | # define irqsafe_cpu_or(pcp, val) __pcpu_size_call(irqsafe_cpu_or_, (val)) |
604 | #endif | 604 | #endif |
605 | 605 | ||
606 | #ifndef irqsafe_cpu_xor | 606 | #ifndef irqsafe_cpu_xor |
@@ -616,7 +616,7 @@ do { \ | |||
616 | # ifndef irqsafe_cpu_xor_8 | 616 | # ifndef irqsafe_cpu_xor_8 |
617 | # define irqsafe_cpu_xor_8(pcp, val) irqsafe_cpu_generic_to_op((pcp), (val), ^=) | 617 | # define irqsafe_cpu_xor_8(pcp, val) irqsafe_cpu_generic_to_op((pcp), (val), ^=) |
618 | # endif | 618 | # endif |
619 | # define irqsafe_cpu_xor(pcp, val) __size_call(irqsafe_cpu_xor_, (val)) | 619 | # define irqsafe_cpu_xor(pcp, val) __pcpu_size_call(irqsafe_cpu_xor_, (val)) |
620 | #endif | 620 | #endif |
621 | 621 | ||
622 | #endif /* __LINUX_PERCPU_H */ | 622 | #endif /* __LINUX_PERCPU_H */ |