[OSy] Problem se statickou strukturou

Martin Cetkovský martin at alikuvkoutek.cz
Wed Dec 5 14:10:52 CET 2007


Ahoj,

mame problemy se statickou strukturou, konkretne pri inicializaci spinlocku. Prikladam relevantni informace.

static struct{
  ...
   struct spinlock firstlock;
   struct spinlock secondlock;
} someglobals;

struct spinlock{
  volatile int value;
};

void spinlock_init(struct spinlock * lock)
{
  printk_locked("%x, %x\n", lock->value, SPINLOCK_UNLOCKED);
  lock->value = SPINLOCK_UNLOCKED;
  printk_locked("%x\n", lock->value);
}

Inicializaci spinlocku volame nasledovne.
spinlock_init(&someglobals.firstlock);
spinlock_init(&someglobals.secondlock);
printk_locked("after %x, value %x", &someglobals.secondlock, someglobals.secondlock.value);

Vypsane hodnoty jsou nasledujici (pricemz u nekolika predchozich jsou hodnoty spravne - 0x0 misto 0xFF*):
0xFFFFFFFF, 0x0
0xFFFFFFFF 
0xFFFFFFFF, 0x0
0xFFFFFFFF
after 0x8001FFD8, value 0xFFFFFFFFA

Bezime na single-CPU a nastava jiz pri inicializaci pameti, cili scheduler ani malloc se dosud nemaji sanci projevit.

Mate nekdo tip, co s tim je? Nejak to nemuzeme najit.

Diky,

Martin Cetkovský






More information about the NSWI004 mailing list