65 lines
1.6 KiB
Plaintext
65 lines
1.6 KiB
Plaintext
// Name: Out of order mutex release
|
|
// Expect: int => 0
|
|
|
|
DefinitionBlock ("", "DSDT", 2, "uTEST", "TESTTABL", 0xF0F0F0F0)
|
|
{
|
|
Method (CHEK, 1, Serialized, 15)
|
|
{
|
|
If (Arg0 != 0) {
|
|
Debug = "Failed to acquire mutex!"
|
|
Return (1)
|
|
}
|
|
|
|
Return (0)
|
|
}
|
|
|
|
Method (MAIN, 0, Serialized)
|
|
{
|
|
Mutex(MUT0)
|
|
Mutex(MUT1)
|
|
Mutex(MUT2)
|
|
Mutex(MUT3)
|
|
Mutex(MUT4)
|
|
Mutex(MUT5)
|
|
Mutex(MUT6)
|
|
Mutex(MUT7)
|
|
Mutex(MUT8)
|
|
Mutex(MUT9)
|
|
Mutex(MUTA)
|
|
Mutex(MUTB)
|
|
Mutex(MUTC)
|
|
Mutex(MUTD)
|
|
Mutex(MUTE)
|
|
Mutex(MUTF)
|
|
|
|
Local0 = 0
|
|
Local0 += CHEK(Acquire(MUT0, 0))
|
|
Local0 += CHEK(Acquire(MUT1, 0))
|
|
Local0 += CHEK(Acquire(MUT2, 0))
|
|
Local0 += CHEK(Acquire(MUT3, 0))
|
|
Local0 += CHEK(Acquire(MUT4, 0))
|
|
Local0 += CHEK(Acquire(MUT5, 0))
|
|
Local0 += CHEK(Acquire(MUT6, 0))
|
|
Local0 += CHEK(Acquire(MUT7, 0))
|
|
Local0 += CHEK(Acquire(MUT8, 0))
|
|
Local0 += CHEK(Acquire(MUT9, 0xF))
|
|
Local0 += CHEK(Acquire(MUTA, 0))
|
|
Local0 += CHEK(Acquire(MUTB, 3))
|
|
Local0 += CHEK(Acquire(MUTC, 123))
|
|
Local0 += CHEK(Acquire(MUTD, 0xFFFE))
|
|
Local0 += CHEK(Acquire(MUTE, 0xFFFD))
|
|
Local0 += CHEK(Acquire(MUTF, 0xFFFF))
|
|
|
|
Release(MUTA)
|
|
Release(MUT9)
|
|
Release(MUTC)
|
|
Release(MUT1)
|
|
Release(MUT7)
|
|
Release(MUTE)
|
|
Release(MUTD)
|
|
|
|
// The rest are released automatically when we exit the outermost method
|
|
Return (Local0)
|
|
}
|
|
}
|