Реализация встроенной сборки функций сравнения и обмена для Sparc V8 - PullRequest
0 голосов
/ 20 февраля 2012

Мой кросс-компилятор gcc не поддерживает Встроенные функции для атомарного доступа к памяти . Как я могу реализовать следующую функцию, используя встроенную сборку для архитектуры Sparc V8:

long __sync_val_compare_and_swap (long *ptr, long oldval long newval)
{
....
}

Те, кто встроен, выполняют атомное сравнение и обмен. То есть, если текущее значение * ptr равно oldval, записать newval в * ptr.

1 Ответ

2 голосов
/ 20 февраля 2012

SPARC V8 не имеет инструкции CAS, поэтому вам придется как-то эмулировать ее. Например. используйте C-подобный псевдокод для CAS на http://www.oracle.com/technetwork/server-storage/solaris10/index-142944.html и используйте статический мьютекс pthread, чтобы обеспечить атомарность атомной области {}.

...