shmem_finc(3)

shmem_int4_finc, shmem_int8_finc, shmem_int_finc, shmem_long_finc, shmem_longlong_finc - Performs an atomic fetch-and-increment operation on a remote data object

As shipped in IRIX 6.5.19. Added in IRIX 6.5.19.

NAME
     shmem_int4_finc, shmem_int8_finc, shmem_int_finc, shmem_long_finc,
     shmem_longlong_finc - Performs an atomic fetch-and-increment operation
     on a remote data object

SYNOPSIS
     C or C++:

        #include <mpp/shmem.h>

        int shmem_int_finc(int *target, int pe);

        long shmem_long_finc(long *target, int pe);

        long long shmem_longlong_finc(long long *target, int pe);
     Fortran:

        INTEGER pe

        INTEGER(KIND=4) SHMEM_INT4_FINC, target4

        INTEGER(KIND=8) SHMEM_INT8_FINC, target8

        ires4 = SHMEM_INT4_FINC(target4, pe)

        ires8 = SHMEM_INT8_FINC(target8, pe)

DESCRIPTION
     These functions perform a fetch-and-increment operation.  The target
     on processing element (PE) pe is increased by one and the function
     returns the previous contents of target as an atomic operation.

     The arguments are as follows:

     target    The remotely accessible integer data object to be updated on
               the remote PE.  The type of target should match that implied
               in the SYNOPSIS section.

     pe        An integer that indicates the PE number on which target is
               to be updated. If you are using Fortran, it must be a
               default integer value.

NOTES
     The term remotely accessible is defined in intro_shmem(3).

     The fetch-and-increment routines write directly into another PE's
     memory without notifying that PE, so the receiving PE should normally
     set automatic cache invalidation by use of shmem_set_cache_inv(3) or
     shmem_set_cache_line_inv(3).  If this is not done, the receiving PE's
     data cache might become incoherent.

     You can use the fetch-and-increment routines without setting the
     remote write invalidate bit if you know, prior to the call, that the
     data at the target addresses are not cachable or are otherwise known
     not to reside in the remote processor's cache at the time of the call.
     Alternatively, the receiving processor can flush its cache when it
     knows that it has received data from another processor.  In general,
     this requires synchronization.  To flush the cache, use
     shmem_udcflush() or shmem_udcflush_line().

RETURN VALUES
     The contents that had been at the target address on the remote PE
     prior to the increment.

SEE ALSO
     intro_shmem(3), shmem_clear_cache_inv(3), shmem_set_cache_inv(3),
     shmem_set_cache_line_inv(3)