L'équivalent du compilateur Sun du __SYNC_FETCH_AND_ADD de GCC? AKA Oracle Studio 12.2

StackOverflow https://stackoverflow.com/questions/5891368

  •  28-10-2019
  •  | 
  •  

Question

Le Studio Oracle (SUN) 12.2 C / C ++ / FORTRAN pour Linux 64 bits a-t-il un équivalent à la fonction __SYNC_FETCH_AND_ADD qui est fournie dans GCC? Je n'arrive pas à trouver le code d'emballage pour l'Intel Atomics in the Sun Documentation ni les fichiers .h dans mon installation Sun Studio. Cela signifie que je suis juste mauvais à rechercher, soit il pourrait ne pas exister, pas sûr de lequel.

Il se trouve que j'ai besoin d'accéder à toutes les fonctions matérielles atomiques disponibles sur l'Intel i7 à l'aide des compilateurs Sun C / C ++, tels que le test-et-set, comparer-and-wap, aller-retour.

Ceci est compliqué par le fait que je ne suis pas un programmeur d'assemblage, et qu'il s'agit d'un compilateur SUN pas d'un compilateur GCC, donc la copie du code ASM de l'implémentation open source de GCC ne fonctionnera pas nécessairement, et enfin c'est un compilateur à 64 bits et Le matériel, de sorte que les exemples 32 bits qui se trouvent facilement ne fonctionneront pas nécessairement directement sur le système 64 bits.

Contexte: Le but est de mettre en œuvre certains programmes simultanés pour Multicore qui nécessitent ces atomiques matériels particuliers.

Merci d'avoir lu.

Pas de solution correcte

Autres conseils

À partir de la documentation Oracle, vous devrez inclure atomic.h et utiliser l'une des opérations suivantes:

uint_t atomic_add_int_nv(volatile uint_t *target, int delta);
uint64_t atomic_cas_64(volatile uint64_t *target, uint64_t cmp, uint64_t newval);
void atomic_or_32(volatile uint32_t *target, uint32_t bits);

... etc.

http://docs.oracle.com/cd/e19253-01/816-5168/6mbb3hr06/index.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top