Linux Audio

Check our new training course

Yocto distribution development and maintenance

Need a Yocto distribution for your embedded project?
Loading...
v5.4
   1// SPDX-License-Identifier: GPL-2.0
   2
   3// Generated by scripts/atomic/gen-atomic-long.sh
   4// DO NOT MODIFY THIS FILE DIRECTLY
   5
   6#ifndef _ASM_GENERIC_ATOMIC_LONG_H
   7#define _ASM_GENERIC_ATOMIC_LONG_H
 
 
 
 
 
 
 
   8
   9#include <asm/types.h>
  10
  11#ifdef CONFIG_64BIT
  12typedef atomic64_t atomic_long_t;
  13#define ATOMIC_LONG_INIT(i)		ATOMIC64_INIT(i)
  14#define atomic_long_cond_read_acquire	atomic64_cond_read_acquire
  15#define atomic_long_cond_read_relaxed	atomic64_cond_read_relaxed
  16#else
  17typedef atomic_t atomic_long_t;
  18#define ATOMIC_LONG_INIT(i)		ATOMIC_INIT(i)
  19#define atomic_long_cond_read_acquire	atomic_cond_read_acquire
  20#define atomic_long_cond_read_relaxed	atomic_cond_read_relaxed
  21#endif
  22
  23#ifdef CONFIG_64BIT
  24
  25static inline long
  26atomic_long_read(const atomic_long_t *v)
  27{
  28	return atomic64_read(v);
  29}
  30
  31static inline long
  32atomic_long_read_acquire(const atomic_long_t *v)
  33{
  34	return atomic64_read_acquire(v);
  35}
  36
  37static inline void
  38atomic_long_set(atomic_long_t *v, long i)
  39{
  40	atomic64_set(v, i);
  41}
  42
  43static inline void
  44atomic_long_set_release(atomic_long_t *v, long i)
  45{
  46	atomic64_set_release(v, i);
  47}
  48
  49static inline void
  50atomic_long_add(long i, atomic_long_t *v)
  51{
  52	atomic64_add(i, v);
  53}
  54
  55static inline long
  56atomic_long_add_return(long i, atomic_long_t *v)
  57{
  58	return atomic64_add_return(i, v);
  59}
  60
  61static inline long
  62atomic_long_add_return_acquire(long i, atomic_long_t *v)
  63{
  64	return atomic64_add_return_acquire(i, v);
  65}
  66
  67static inline long
  68atomic_long_add_return_release(long i, atomic_long_t *v)
  69{
  70	return atomic64_add_return_release(i, v);
  71}
  72
  73static inline long
  74atomic_long_add_return_relaxed(long i, atomic_long_t *v)
  75{
  76	return atomic64_add_return_relaxed(i, v);
  77}
  78
  79static inline long
  80atomic_long_fetch_add(long i, atomic_long_t *v)
  81{
  82	return atomic64_fetch_add(i, v);
  83}
  84
  85static inline long
  86atomic_long_fetch_add_acquire(long i, atomic_long_t *v)
  87{
  88	return atomic64_fetch_add_acquire(i, v);
  89}
  90
  91static inline long
  92atomic_long_fetch_add_release(long i, atomic_long_t *v)
  93{
  94	return atomic64_fetch_add_release(i, v);
  95}
  96
  97static inline long
  98atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)
  99{
 100	return atomic64_fetch_add_relaxed(i, v);
 101}
 102
 103static inline void
 104atomic_long_sub(long i, atomic_long_t *v)
 105{
 106	atomic64_sub(i, v);
 107}
 108
 109static inline long
 110atomic_long_sub_return(long i, atomic_long_t *v)
 111{
 112	return atomic64_sub_return(i, v);
 113}
 114
 115static inline long
 116atomic_long_sub_return_acquire(long i, atomic_long_t *v)
 117{
 118	return atomic64_sub_return_acquire(i, v);
 119}
 120
 121static inline long
 122atomic_long_sub_return_release(long i, atomic_long_t *v)
 123{
 124	return atomic64_sub_return_release(i, v);
 125}
 126
 127static inline long
 128atomic_long_sub_return_relaxed(long i, atomic_long_t *v)
 129{
 130	return atomic64_sub_return_relaxed(i, v);
 131}
 132
 133static inline long
 134atomic_long_fetch_sub(long i, atomic_long_t *v)
 135{
 136	return atomic64_fetch_sub(i, v);
 137}
 138
 139static inline long
 140atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)
 141{
 142	return atomic64_fetch_sub_acquire(i, v);
 143}
 144
 145static inline long
 146atomic_long_fetch_sub_release(long i, atomic_long_t *v)
 147{
 148	return atomic64_fetch_sub_release(i, v);
 149}
 150
 151static inline long
 152atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)
 153{
 154	return atomic64_fetch_sub_relaxed(i, v);
 155}
 156
 157static inline void
 158atomic_long_inc(atomic_long_t *v)
 159{
 160	atomic64_inc(v);
 161}
 162
 163static inline long
 164atomic_long_inc_return(atomic_long_t *v)
 165{
 166	return atomic64_inc_return(v);
 167}
 168
 169static inline long
 170atomic_long_inc_return_acquire(atomic_long_t *v)
 171{
 172	return atomic64_inc_return_acquire(v);
 173}
 174
 175static inline long
 176atomic_long_inc_return_release(atomic_long_t *v)
 177{
 178	return atomic64_inc_return_release(v);
 179}
 180
 181static inline long
 182atomic_long_inc_return_relaxed(atomic_long_t *v)
 183{
 184	return atomic64_inc_return_relaxed(v);
 185}
 186
 187static inline long
 188atomic_long_fetch_inc(atomic_long_t *v)
 189{
 190	return atomic64_fetch_inc(v);
 191}
 192
 193static inline long
 194atomic_long_fetch_inc_acquire(atomic_long_t *v)
 195{
 196	return atomic64_fetch_inc_acquire(v);
 197}
 198
 199static inline long
 200atomic_long_fetch_inc_release(atomic_long_t *v)
 201{
 202	return atomic64_fetch_inc_release(v);
 203}
 204
 205static inline long
 206atomic_long_fetch_inc_relaxed(atomic_long_t *v)
 207{
 208	return atomic64_fetch_inc_relaxed(v);
 209}
 210
 211static inline void
 212atomic_long_dec(atomic_long_t *v)
 213{
 214	atomic64_dec(v);
 215}
 216
 217static inline long
 218atomic_long_dec_return(atomic_long_t *v)
 219{
 220	return atomic64_dec_return(v);
 221}
 222
 223static inline long
 224atomic_long_dec_return_acquire(atomic_long_t *v)
 225{
 226	return atomic64_dec_return_acquire(v);
 227}
 228
 229static inline long
 230atomic_long_dec_return_release(atomic_long_t *v)
 231{
 232	return atomic64_dec_return_release(v);
 233}
 234
 235static inline long
 236atomic_long_dec_return_relaxed(atomic_long_t *v)
 237{
 238	return atomic64_dec_return_relaxed(v);
 239}
 240
 241static inline long
 242atomic_long_fetch_dec(atomic_long_t *v)
 243{
 244	return atomic64_fetch_dec(v);
 245}
 246
 247static inline long
 248atomic_long_fetch_dec_acquire(atomic_long_t *v)
 249{
 250	return atomic64_fetch_dec_acquire(v);
 251}
 252
 253static inline long
 254atomic_long_fetch_dec_release(atomic_long_t *v)
 255{
 256	return atomic64_fetch_dec_release(v);
 257}
 258
 259static inline long
 260atomic_long_fetch_dec_relaxed(atomic_long_t *v)
 261{
 262	return atomic64_fetch_dec_relaxed(v);
 263}
 264
 265static inline void
 266atomic_long_and(long i, atomic_long_t *v)
 267{
 268	atomic64_and(i, v);
 269}
 270
 271static inline long
 272atomic_long_fetch_and(long i, atomic_long_t *v)
 273{
 274	return atomic64_fetch_and(i, v);
 275}
 276
 277static inline long
 278atomic_long_fetch_and_acquire(long i, atomic_long_t *v)
 279{
 280	return atomic64_fetch_and_acquire(i, v);
 281}
 282
 283static inline long
 284atomic_long_fetch_and_release(long i, atomic_long_t *v)
 285{
 286	return atomic64_fetch_and_release(i, v);
 287}
 288
 289static inline long
 290atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)
 291{
 292	return atomic64_fetch_and_relaxed(i, v);
 293}
 294
 295static inline void
 296atomic_long_andnot(long i, atomic_long_t *v)
 297{
 298	atomic64_andnot(i, v);
 299}
 300
 301static inline long
 302atomic_long_fetch_andnot(long i, atomic_long_t *v)
 303{
 304	return atomic64_fetch_andnot(i, v);
 305}
 306
 307static inline long
 308atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)
 309{
 310	return atomic64_fetch_andnot_acquire(i, v);
 311}
 312
 313static inline long
 314atomic_long_fetch_andnot_release(long i, atomic_long_t *v)
 315{
 316	return atomic64_fetch_andnot_release(i, v);
 317}
 318
 319static inline long
 320atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)
 321{
 322	return atomic64_fetch_andnot_relaxed(i, v);
 323}
 324
 325static inline void
 326atomic_long_or(long i, atomic_long_t *v)
 327{
 328	atomic64_or(i, v);
 329}
 330
 331static inline long
 332atomic_long_fetch_or(long i, atomic_long_t *v)
 333{
 334	return atomic64_fetch_or(i, v);
 335}
 336
 337static inline long
 338atomic_long_fetch_or_acquire(long i, atomic_long_t *v)
 339{
 340	return atomic64_fetch_or_acquire(i, v);
 341}
 342
 343static inline long
 344atomic_long_fetch_or_release(long i, atomic_long_t *v)
 345{
 346	return atomic64_fetch_or_release(i, v);
 347}
 348
 349static inline long
 350atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)
 351{
 352	return atomic64_fetch_or_relaxed(i, v);
 353}
 354
 355static inline void
 356atomic_long_xor(long i, atomic_long_t *v)
 357{
 358	atomic64_xor(i, v);
 359}
 360
 361static inline long
 362atomic_long_fetch_xor(long i, atomic_long_t *v)
 363{
 364	return atomic64_fetch_xor(i, v);
 365}
 366
 367static inline long
 368atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)
 369{
 370	return atomic64_fetch_xor_acquire(i, v);
 371}
 372
 373static inline long
 374atomic_long_fetch_xor_release(long i, atomic_long_t *v)
 375{
 376	return atomic64_fetch_xor_release(i, v);
 377}
 378
 379static inline long
 380atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)
 381{
 382	return atomic64_fetch_xor_relaxed(i, v);
 383}
 384
 385static inline long
 386atomic_long_xchg(atomic_long_t *v, long i)
 387{
 388	return atomic64_xchg(v, i);
 389}
 390
 391static inline long
 392atomic_long_xchg_acquire(atomic_long_t *v, long i)
 393{
 394	return atomic64_xchg_acquire(v, i);
 395}
 396
 397static inline long
 398atomic_long_xchg_release(atomic_long_t *v, long i)
 399{
 400	return atomic64_xchg_release(v, i);
 401}
 402
 403static inline long
 404atomic_long_xchg_relaxed(atomic_long_t *v, long i)
 405{
 406	return atomic64_xchg_relaxed(v, i);
 407}
 408
 409static inline long
 410atomic_long_cmpxchg(atomic_long_t *v, long old, long new)
 411{
 412	return atomic64_cmpxchg(v, old, new);
 413}
 414
 415static inline long
 416atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)
 417{
 418	return atomic64_cmpxchg_acquire(v, old, new);
 419}
 420
 421static inline long
 422atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)
 423{
 424	return atomic64_cmpxchg_release(v, old, new);
 425}
 426
 427static inline long
 428atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)
 429{
 430	return atomic64_cmpxchg_relaxed(v, old, new);
 431}
 432
 433static inline bool
 434atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)
 435{
 436	return atomic64_try_cmpxchg(v, (s64 *)old, new);
 437}
 438
 439static inline bool
 440atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)
 441{
 442	return atomic64_try_cmpxchg_acquire(v, (s64 *)old, new);
 443}
 444
 445static inline bool
 446atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)
 447{
 448	return atomic64_try_cmpxchg_release(v, (s64 *)old, new);
 449}
 450
 451static inline bool
 452atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)
 453{
 454	return atomic64_try_cmpxchg_relaxed(v, (s64 *)old, new);
 455}
 456
 457static inline bool
 458atomic_long_sub_and_test(long i, atomic_long_t *v)
 459{
 460	return atomic64_sub_and_test(i, v);
 461}
 462
 463static inline bool
 464atomic_long_dec_and_test(atomic_long_t *v)
 465{
 466	return atomic64_dec_and_test(v);
 467}
 468
 469static inline bool
 470atomic_long_inc_and_test(atomic_long_t *v)
 471{
 472	return atomic64_inc_and_test(v);
 473}
 474
 475static inline bool
 476atomic_long_add_negative(long i, atomic_long_t *v)
 477{
 478	return atomic64_add_negative(i, v);
 479}
 480
 481static inline long
 482atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)
 483{
 484	return atomic64_fetch_add_unless(v, a, u);
 485}
 486
 487static inline bool
 488atomic_long_add_unless(atomic_long_t *v, long a, long u)
 489{
 490	return atomic64_add_unless(v, a, u);
 491}
 492
 493static inline bool
 494atomic_long_inc_not_zero(atomic_long_t *v)
 495{
 496	return atomic64_inc_not_zero(v);
 497}
 498
 499static inline bool
 500atomic_long_inc_unless_negative(atomic_long_t *v)
 501{
 502	return atomic64_inc_unless_negative(v);
 503}
 504
 505static inline bool
 506atomic_long_dec_unless_positive(atomic_long_t *v)
 507{
 508	return atomic64_dec_unless_positive(v);
 509}
 510
 511static inline long
 512atomic_long_dec_if_positive(atomic_long_t *v)
 513{
 514	return atomic64_dec_if_positive(v);
 515}
 516
 517#else /* CONFIG_64BIT */
 518
 519static inline long
 520atomic_long_read(const atomic_long_t *v)
 521{
 522	return atomic_read(v);
 523}
 524
 525static inline long
 526atomic_long_read_acquire(const atomic_long_t *v)
 527{
 528	return atomic_read_acquire(v);
 529}
 530
 531static inline void
 532atomic_long_set(atomic_long_t *v, long i)
 533{
 534	atomic_set(v, i);
 535}
 536
 537static inline void
 538atomic_long_set_release(atomic_long_t *v, long i)
 539{
 540	atomic_set_release(v, i);
 541}
 542
 543static inline void
 544atomic_long_add(long i, atomic_long_t *v)
 545{
 546	atomic_add(i, v);
 547}
 548
 549static inline long
 550atomic_long_add_return(long i, atomic_long_t *v)
 551{
 552	return atomic_add_return(i, v);
 553}
 554
 555static inline long
 556atomic_long_add_return_acquire(long i, atomic_long_t *v)
 557{
 558	return atomic_add_return_acquire(i, v);
 559}
 560
 561static inline long
 562atomic_long_add_return_release(long i, atomic_long_t *v)
 563{
 564	return atomic_add_return_release(i, v);
 565}
 566
 567static inline long
 568atomic_long_add_return_relaxed(long i, atomic_long_t *v)
 569{
 570	return atomic_add_return_relaxed(i, v);
 571}
 572
 573static inline long
 574atomic_long_fetch_add(long i, atomic_long_t *v)
 575{
 576	return atomic_fetch_add(i, v);
 577}
 578
 579static inline long
 580atomic_long_fetch_add_acquire(long i, atomic_long_t *v)
 581{
 582	return atomic_fetch_add_acquire(i, v);
 583}
 584
 585static inline long
 586atomic_long_fetch_add_release(long i, atomic_long_t *v)
 587{
 588	return atomic_fetch_add_release(i, v);
 589}
 590
 591static inline long
 592atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)
 593{
 594	return atomic_fetch_add_relaxed(i, v);
 595}
 596
 597static inline void
 598atomic_long_sub(long i, atomic_long_t *v)
 599{
 600	atomic_sub(i, v);
 601}
 602
 603static inline long
 604atomic_long_sub_return(long i, atomic_long_t *v)
 605{
 606	return atomic_sub_return(i, v);
 607}
 608
 609static inline long
 610atomic_long_sub_return_acquire(long i, atomic_long_t *v)
 611{
 612	return atomic_sub_return_acquire(i, v);
 613}
 614
 615static inline long
 616atomic_long_sub_return_release(long i, atomic_long_t *v)
 617{
 618	return atomic_sub_return_release(i, v);
 619}
 620
 621static inline long
 622atomic_long_sub_return_relaxed(long i, atomic_long_t *v)
 623{
 624	return atomic_sub_return_relaxed(i, v);
 625}
 626
 627static inline long
 628atomic_long_fetch_sub(long i, atomic_long_t *v)
 629{
 630	return atomic_fetch_sub(i, v);
 631}
 632
 633static inline long
 634atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)
 635{
 636	return atomic_fetch_sub_acquire(i, v);
 637}
 638
 639static inline long
 640atomic_long_fetch_sub_release(long i, atomic_long_t *v)
 641{
 642	return atomic_fetch_sub_release(i, v);
 643}
 644
 645static inline long
 646atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)
 647{
 648	return atomic_fetch_sub_relaxed(i, v);
 649}
 650
 651static inline void
 652atomic_long_inc(atomic_long_t *v)
 653{
 654	atomic_inc(v);
 655}
 656
 657static inline long
 658atomic_long_inc_return(atomic_long_t *v)
 659{
 660	return atomic_inc_return(v);
 661}
 662
 663static inline long
 664atomic_long_inc_return_acquire(atomic_long_t *v)
 665{
 666	return atomic_inc_return_acquire(v);
 667}
 668
 669static inline long
 670atomic_long_inc_return_release(atomic_long_t *v)
 671{
 672	return atomic_inc_return_release(v);
 673}
 674
 675static inline long
 676atomic_long_inc_return_relaxed(atomic_long_t *v)
 677{
 678	return atomic_inc_return_relaxed(v);
 679}
 680
 681static inline long
 682atomic_long_fetch_inc(atomic_long_t *v)
 683{
 684	return atomic_fetch_inc(v);
 685}
 686
 687static inline long
 688atomic_long_fetch_inc_acquire(atomic_long_t *v)
 689{
 690	return atomic_fetch_inc_acquire(v);
 691}
 692
 693static inline long
 694atomic_long_fetch_inc_release(atomic_long_t *v)
 695{
 696	return atomic_fetch_inc_release(v);
 697}
 698
 699static inline long
 700atomic_long_fetch_inc_relaxed(atomic_long_t *v)
 701{
 702	return atomic_fetch_inc_relaxed(v);
 703}
 704
 705static inline void
 706atomic_long_dec(atomic_long_t *v)
 707{
 708	atomic_dec(v);
 709}
 710
 711static inline long
 712atomic_long_dec_return(atomic_long_t *v)
 713{
 714	return atomic_dec_return(v);
 715}
 716
 717static inline long
 718atomic_long_dec_return_acquire(atomic_long_t *v)
 719{
 720	return atomic_dec_return_acquire(v);
 721}
 722
 723static inline long
 724atomic_long_dec_return_release(atomic_long_t *v)
 725{
 726	return atomic_dec_return_release(v);
 727}
 728
 729static inline long
 730atomic_long_dec_return_relaxed(atomic_long_t *v)
 731{
 732	return atomic_dec_return_relaxed(v);
 733}
 734
 735static inline long
 736atomic_long_fetch_dec(atomic_long_t *v)
 737{
 738	return atomic_fetch_dec(v);
 739}
 740
 741static inline long
 742atomic_long_fetch_dec_acquire(atomic_long_t *v)
 743{
 744	return atomic_fetch_dec_acquire(v);
 745}
 746
 747static inline long
 748atomic_long_fetch_dec_release(atomic_long_t *v)
 749{
 750	return atomic_fetch_dec_release(v);
 751}
 752
 753static inline long
 754atomic_long_fetch_dec_relaxed(atomic_long_t *v)
 755{
 756	return atomic_fetch_dec_relaxed(v);
 757}
 758
 759static inline void
 760atomic_long_and(long i, atomic_long_t *v)
 761{
 762	atomic_and(i, v);
 763}
 764
 765static inline long
 766atomic_long_fetch_and(long i, atomic_long_t *v)
 767{
 768	return atomic_fetch_and(i, v);
 769}
 770
 771static inline long
 772atomic_long_fetch_and_acquire(long i, atomic_long_t *v)
 773{
 774	return atomic_fetch_and_acquire(i, v);
 775}
 776
 777static inline long
 778atomic_long_fetch_and_release(long i, atomic_long_t *v)
 779{
 780	return atomic_fetch_and_release(i, v);
 781}
 782
 783static inline long
 784atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)
 785{
 786	return atomic_fetch_and_relaxed(i, v);
 787}
 788
 789static inline void
 790atomic_long_andnot(long i, atomic_long_t *v)
 791{
 792	atomic_andnot(i, v);
 793}
 794
 795static inline long
 796atomic_long_fetch_andnot(long i, atomic_long_t *v)
 797{
 798	return atomic_fetch_andnot(i, v);
 799}
 800
 801static inline long
 802atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)
 803{
 804	return atomic_fetch_andnot_acquire(i, v);
 805}
 806
 807static inline long
 808atomic_long_fetch_andnot_release(long i, atomic_long_t *v)
 809{
 810	return atomic_fetch_andnot_release(i, v);
 811}
 812
 813static inline long
 814atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)
 815{
 816	return atomic_fetch_andnot_relaxed(i, v);
 817}
 818
 819static inline void
 820atomic_long_or(long i, atomic_long_t *v)
 821{
 822	atomic_or(i, v);
 823}
 824
 825static inline long
 826atomic_long_fetch_or(long i, atomic_long_t *v)
 827{
 828	return atomic_fetch_or(i, v);
 829}
 830
 831static inline long
 832atomic_long_fetch_or_acquire(long i, atomic_long_t *v)
 833{
 834	return atomic_fetch_or_acquire(i, v);
 835}
 836
 837static inline long
 838atomic_long_fetch_or_release(long i, atomic_long_t *v)
 839{
 840	return atomic_fetch_or_release(i, v);
 841}
 842
 843static inline long
 844atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)
 845{
 846	return atomic_fetch_or_relaxed(i, v);
 847}
 848
 849static inline void
 850atomic_long_xor(long i, atomic_long_t *v)
 851{
 852	atomic_xor(i, v);
 853}
 854
 855static inline long
 856atomic_long_fetch_xor(long i, atomic_long_t *v)
 857{
 858	return atomic_fetch_xor(i, v);
 859}
 860
 861static inline long
 862atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)
 863{
 864	return atomic_fetch_xor_acquire(i, v);
 865}
 866
 867static inline long
 868atomic_long_fetch_xor_release(long i, atomic_long_t *v)
 869{
 870	return atomic_fetch_xor_release(i, v);
 871}
 872
 873static inline long
 874atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)
 875{
 876	return atomic_fetch_xor_relaxed(i, v);
 877}
 878
 879static inline long
 880atomic_long_xchg(atomic_long_t *v, long i)
 881{
 882	return atomic_xchg(v, i);
 883}
 884
 885static inline long
 886atomic_long_xchg_acquire(atomic_long_t *v, long i)
 887{
 888	return atomic_xchg_acquire(v, i);
 889}
 890
 891static inline long
 892atomic_long_xchg_release(atomic_long_t *v, long i)
 893{
 894	return atomic_xchg_release(v, i);
 895}
 896
 897static inline long
 898atomic_long_xchg_relaxed(atomic_long_t *v, long i)
 899{
 900	return atomic_xchg_relaxed(v, i);
 901}
 902
 903static inline long
 904atomic_long_cmpxchg(atomic_long_t *v, long old, long new)
 905{
 906	return atomic_cmpxchg(v, old, new);
 907}
 908
 909static inline long
 910atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)
 911{
 912	return atomic_cmpxchg_acquire(v, old, new);
 913}
 914
 915static inline long
 916atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)
 917{
 918	return atomic_cmpxchg_release(v, old, new);
 919}
 920
 921static inline long
 922atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)
 923{
 924	return atomic_cmpxchg_relaxed(v, old, new);
 925}
 926
 927static inline bool
 928atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)
 929{
 930	return atomic_try_cmpxchg(v, (int *)old, new);
 931}
 932
 933static inline bool
 934atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)
 935{
 936	return atomic_try_cmpxchg_acquire(v, (int *)old, new);
 937}
 938
 939static inline bool
 940atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)
 941{
 942	return atomic_try_cmpxchg_release(v, (int *)old, new);
 943}
 944
 945static inline bool
 946atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)
 947{
 948	return atomic_try_cmpxchg_relaxed(v, (int *)old, new);
 949}
 950
 951static inline bool
 952atomic_long_sub_and_test(long i, atomic_long_t *v)
 953{
 954	return atomic_sub_and_test(i, v);
 955}
 956
 957static inline bool
 958atomic_long_dec_and_test(atomic_long_t *v)
 959{
 960	return atomic_dec_and_test(v);
 961}
 962
 963static inline bool
 964atomic_long_inc_and_test(atomic_long_t *v)
 965{
 966	return atomic_inc_and_test(v);
 967}
 968
 969static inline bool
 970atomic_long_add_negative(long i, atomic_long_t *v)
 971{
 972	return atomic_add_negative(i, v);
 973}
 974
 975static inline long
 976atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)
 977{
 978	return atomic_fetch_add_unless(v, a, u);
 979}
 980
 981static inline bool
 982atomic_long_add_unless(atomic_long_t *v, long a, long u)
 983{
 984	return atomic_add_unless(v, a, u);
 985}
 986
 987static inline bool
 988atomic_long_inc_not_zero(atomic_long_t *v)
 989{
 990	return atomic_inc_not_zero(v);
 991}
 992
 993static inline bool
 994atomic_long_inc_unless_negative(atomic_long_t *v)
 995{
 996	return atomic_inc_unless_negative(v);
 997}
 998
 999static inline bool
1000atomic_long_dec_unless_positive(atomic_long_t *v)
1001{
1002	return atomic_dec_unless_positive(v);
1003}
1004
1005static inline long
1006atomic_long_dec_if_positive(atomic_long_t *v)
1007{
1008	return atomic_dec_if_positive(v);
1009}
1010
1011#endif /* CONFIG_64BIT */
1012#endif /* _ASM_GENERIC_ATOMIC_LONG_H */
1013// 77558968132ce4f911ad53f6f52ce423006f6268
v3.5.6
 
 
 
 
 
  1#ifndef _ASM_GENERIC_ATOMIC_LONG_H
  2#define _ASM_GENERIC_ATOMIC_LONG_H
  3/*
  4 * Copyright (C) 2005 Silicon Graphics, Inc.
  5 *	Christoph Lameter
  6 *
  7 * Allows to provide arch independent atomic definitions without the need to
  8 * edit all arch specific atomic.h files.
  9 */
 10
 11#include <asm/types.h>
 12
 13/*
 14 * Suppport for atomic_long_t
 15 *
 16 * Casts for parameters are avoided for existing atomic functions in order to
 17 * avoid issues with cast-as-lval under gcc 4.x and other limitations that the
 18 * macros of a platform may have.
 19 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 20
 21#if BITS_PER_LONG == 64
 
 
 
 
 22
 23typedef atomic64_t atomic_long_t;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 24
 25#define ATOMIC_LONG_INIT(i)	ATOMIC64_INIT(i)
 
 
 
 
 26
 27static inline long atomic_long_read(atomic_long_t *l)
 
 28{
 29	atomic64_t *v = (atomic64_t *)l;
 
 30
 31	return (long)atomic64_read(v);
 
 
 
 32}
 33
 34static inline void atomic_long_set(atomic_long_t *l, long i)
 
 35{
 36	atomic64_t *v = (atomic64_t *)l;
 
 37
 38	atomic64_set(v, i);
 
 
 
 
 
 
 
 
 
 39}
 40
 41static inline void atomic_long_inc(atomic_long_t *l)
 
 42{
 43	atomic64_t *v = (atomic64_t *)l;
 
 44
 
 
 
 45	atomic64_inc(v);
 46}
 47
 48static inline void atomic_long_dec(atomic_long_t *l)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 49{
 50	atomic64_t *v = (atomic64_t *)l;
 
 51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 52	atomic64_dec(v);
 53}
 54
 55static inline void atomic_long_add(long i, atomic_long_t *l)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 56{
 57	atomic64_t *v = (atomic64_t *)l;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 58
 59	atomic64_add(i, v);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 60}
 61
 62static inline void atomic_long_sub(long i, atomic_long_t *l)
 
 63{
 64	atomic64_t *v = (atomic64_t *)l;
 
 65
 66	atomic64_sub(i, v);
 
 
 
 67}
 68
 69static inline int atomic_long_sub_and_test(long i, atomic_long_t *l)
 
 70{
 71	atomic64_t *v = (atomic64_t *)l;
 
 72
 
 
 
 73	return atomic64_sub_and_test(i, v);
 74}
 75
 76static inline int atomic_long_dec_and_test(atomic_long_t *l)
 
 77{
 78	atomic64_t *v = (atomic64_t *)l;
 
 79
 80	return atomic64_dec_and_test(v);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 81}
 82
 83static inline int atomic_long_inc_and_test(atomic_long_t *l)
 
 84{
 85	atomic64_t *v = (atomic64_t *)l;
 
 86
 87	return atomic64_inc_and_test(v);
 
 
 
 88}
 89
 90static inline int atomic_long_add_negative(long i, atomic_long_t *l)
 
 
 
 91{
 92	atomic64_t *v = (atomic64_t *)l;
 
 93
 94	return atomic64_add_negative(i, v);
 
 
 
 95}
 96
 97static inline long atomic_long_add_return(long i, atomic_long_t *l)
 
 98{
 99	atomic64_t *v = (atomic64_t *)l;
 
100
101	return (long)atomic64_add_return(i, v);
 
 
 
102}
103
104static inline long atomic_long_sub_return(long i, atomic_long_t *l)
 
105{
106	atomic64_t *v = (atomic64_t *)l;
 
107
108	return (long)atomic64_sub_return(i, v);
 
 
 
109}
110
111static inline long atomic_long_inc_return(atomic_long_t *l)
 
112{
113	atomic64_t *v = (atomic64_t *)l;
 
114
115	return (long)atomic64_inc_return(v);
 
 
 
116}
117
118static inline long atomic_long_dec_return(atomic_long_t *l)
 
119{
120	atomic64_t *v = (atomic64_t *)l;
 
121
122	return (long)atomic64_dec_return(v);
 
 
 
123}
124
125static inline long atomic_long_add_unless(atomic_long_t *l, long a, long u)
 
126{
127	atomic64_t *v = (atomic64_t *)l;
 
128
129	return (long)atomic64_add_unless(v, a, u);
 
 
 
130}
131
132#define atomic_long_inc_not_zero(l) atomic64_inc_not_zero((atomic64_t *)(l))
 
 
 
 
133
134#define atomic_long_cmpxchg(l, old, new) \
135	(atomic64_cmpxchg((atomic64_t *)(l), (old), (new)))
136#define atomic_long_xchg(v, new) \
137	(atomic64_xchg((atomic64_t *)(v), (new)))
 
138
139#else  /*  BITS_PER_LONG == 64  */
 
 
 
 
140
141typedef atomic_t atomic_long_t;
 
 
 
 
142
143#define ATOMIC_LONG_INIT(i)	ATOMIC_INIT(i)
144static inline long atomic_long_read(atomic_long_t *l)
145{
146	atomic_t *v = (atomic_t *)l;
 
147
148	return (long)atomic_read(v);
 
 
 
149}
150
151static inline void atomic_long_set(atomic_long_t *l, long i)
 
152{
153	atomic_t *v = (atomic_t *)l;
 
154
155	atomic_set(v, i);
 
 
 
 
 
 
 
 
 
156}
157
158static inline void atomic_long_inc(atomic_long_t *l)
 
159{
160	atomic_t *v = (atomic_t *)l;
 
161
 
 
 
162	atomic_inc(v);
163}
164
165static inline void atomic_long_dec(atomic_long_t *l)
 
166{
167	atomic_t *v = (atomic_t *)l;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169	atomic_dec(v);
170}
171
172static inline void atomic_long_add(long i, atomic_long_t *l)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173{
174	atomic_t *v = (atomic_t *)l;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
176	atomic_add(i, v);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177}
178
179static inline void atomic_long_sub(long i, atomic_long_t *l)
 
180{
181	atomic_t *v = (atomic_t *)l;
 
182
183	atomic_sub(i, v);
 
 
 
184}
185
186static inline int atomic_long_sub_and_test(long i, atomic_long_t *l)
 
187{
188	atomic_t *v = (atomic_t *)l;
 
189
190	return atomic_sub_and_test(i, v);
 
 
 
191}
192
193static inline int atomic_long_dec_and_test(atomic_long_t *l)
 
194{
195	atomic_t *v = (atomic_t *)l;
 
196
197	return atomic_dec_and_test(v);
 
 
 
198}
199
200static inline int atomic_long_inc_and_test(atomic_long_t *l)
 
201{
202	atomic_t *v = (atomic_t *)l;
 
203
204	return atomic_inc_and_test(v);
 
 
 
205}
206
207static inline int atomic_long_add_negative(long i, atomic_long_t *l)
 
208{
209	atomic_t *v = (atomic_t *)l;
 
210
211	return atomic_add_negative(i, v);
 
 
 
212}
213
214static inline long atomic_long_add_return(long i, atomic_long_t *l)
 
215{
216	atomic_t *v = (atomic_t *)l;
 
217
218	return (long)atomic_add_return(i, v);
 
 
 
219}
220
221static inline long atomic_long_sub_return(long i, atomic_long_t *l)
 
222{
223	atomic_t *v = (atomic_t *)l;
 
224
225	return (long)atomic_sub_return(i, v);
 
 
 
226}
227
228static inline long atomic_long_inc_return(atomic_long_t *l)
 
229{
230	atomic_t *v = (atomic_t *)l;
 
231
232	return (long)atomic_inc_return(v);
 
 
 
233}
234
235static inline long atomic_long_dec_return(atomic_long_t *l)
 
236{
237	atomic_t *v = (atomic_t *)l;
 
238
239	return (long)atomic_dec_return(v);
 
 
 
240}
241
242static inline long atomic_long_add_unless(atomic_long_t *l, long a, long u)
 
243{
244	atomic_t *v = (atomic_t *)l;
 
245
246	return (long)atomic_add_unless(v, a, u);
 
 
 
247}
248
249#define atomic_long_inc_not_zero(l) atomic_inc_not_zero((atomic_t *)(l))
 
 
 
 
250
251#define atomic_long_cmpxchg(l, old, new) \
252	(atomic_cmpxchg((atomic_t *)(l), (old), (new)))
253#define atomic_long_xchg(v, new) \
254	(atomic_xchg((atomic_t *)(v), (new)))
 
255
256#endif  /*  BITS_PER_LONG == 64  */
 
 
 
 
257
258#endif  /*  _ASM_GENERIC_ATOMIC_LONG_H  */