summaryrefslogtreecommitdiffstats
path: root/ctrl/sysrepo-plugins/hicn-light/plugin/model/tlock.c
blob: ba788d3a01f8bd02cd3a77d3642a1414b13515c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "tlock.h"

void Ticket_init(int Lock_Number, long int init) {
  __atomic_store(&En[Lock_Number], &init, __ATOMIC_SEQ_CST);
  __atomic_store(&De[Lock_Number], &init, __ATOMIC_SEQ_CST);
  // En[Lock_Number]=init;
  // De[Lock_Number]=init;
}

void Ticket_Lock(int Lock_Number) {
  int my_ticket = __sync_fetch_and_add(&En[Lock_Number], 1);
  while (my_ticket != De[Lock_Number]) {
  };
}

void Ticket_Unlock(int Lock_Number) { De[Lock_Number]++; }