реклама на сайте
подробности

 
 
> InterlockedExchangeAdd под ARM, атомарная версия
Kris2007
сообщение Apr 4 2012, 14:55
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 15-03-07
Пользователь №: 26 193



Никто не поможет с атомарной реализацией под ARM?

Неатомарная на Си(логика работы):
Код
LONG InterlockedExchangeAdd(LONG volatile *dest, LONG incr)
{
    LONG res = (*dest);
    (*dest) += incr;
    return res;
}

Атомарная под x86(для linux):
Код
static inline LONG InterlockedExchangeAdd (LONG volatile * dest, LONG incr)
{
   int ret;
   __asm __volatile__(
    "lock\n\t"\
    "xaddl %0,(%1)"
    : "=r" (ret)
    : "r" (dest), "0" (incr)
    : "memory"
  );

  return ret;
}


Сообщение отредактировал IgorKossak - Apr 4 2012, 18:45
Причина редактирования: [code]!!!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01355 секунд с 7
ELECTRONIX ©2004-2016