To make it clear I am a student with a question and have read the Posting Guidelines, here is what I have written: It is contained within a file called synch.cc Lock::Lock(char* debugName) { name = debugName; lockHolder = NULL; // no thread yet holds lock Semaphore(name, 1); } Lock::~Lock() { delete lockHolder; } void Lock::Acquire() { IntStatus oldLevel = interrupt->SetLevel(IntOff); ...