82 lines
3.4 KiB
C
82 lines
3.4 KiB
C
//================================================================================
|
|
// Microsoft Confidential.
|
|
// Copyright (C) Microsoft 1997.
|
|
//
|
|
// Author: RameshV
|
|
//================================================================================
|
|
|
|
#ifndef ADT_H_INCLUDED
|
|
#define ADT_H_INCLUDED
|
|
//================================================================================
|
|
// Required headers
|
|
//================================================================================
|
|
#include <winbase.h> // Semaphores and wait functions
|
|
|
|
//================================================================================
|
|
// Some Data type implementations. EXPORTED
|
|
//================================================================================
|
|
typedef struct st_prodcons { // structure for producer-consumer sychro.
|
|
HANDLE ProducerSemaphore; // Semaphore for tracking producers
|
|
HANDLE ConsumerSemaphore; // Semaphore for tracking consumers
|
|
DWORD MaxProducers; // Maximum # of producers
|
|
DWORD MaxConsumers; // Maximum # of consumers
|
|
DWORD Flags; // Options -- Unused?
|
|
} PRODCONS, *PPRODCONS;
|
|
|
|
//================================================================================
|
|
// Function headers of EXPORTED functions
|
|
//================================================================================
|
|
|
|
DWORD // Win32 Errors
|
|
InitializeProducerConsumer( // Initialize the pointer
|
|
OUT PPRODCONS Synch, // The memory must be pre-allocated
|
|
IN DWORD MaxProducers, // Total # of simultaneous producers
|
|
IN DWORD MaxConsumers // Totat # of consumers
|
|
);
|
|
|
|
VOID
|
|
DestroyProducerConsumer( // Destroy and free up resources
|
|
IN PPRODCONS Synch // The producer consumer object
|
|
);
|
|
|
|
DWORD // Win32 errors
|
|
StartProducerEx( // See StartProdConsExInternal
|
|
IN PPRODCONS Synch, // Syncho. object
|
|
IN DWORD TimeOutMilliSec,// Timeout for wait in milliseconds
|
|
IN BOOL Alertable // Is the wait alertable?
|
|
);
|
|
|
|
|
|
DWORD // Win32 errors
|
|
StartConsumerEx( // See StartProdConsExInternal
|
|
IN PPRODCONS Synch, // Syncho. object
|
|
IN DWORD TimeOutMilliSec,// Timeout for wait in milliseconds
|
|
IN BOOL Alertable // Is the wait alertable?
|
|
);
|
|
|
|
DWORD // Win32 errors
|
|
StartProducer( // Wait until a producer can start
|
|
IN PPRODCONS Synch // The synch object
|
|
);
|
|
|
|
DWORD // Win32 errors
|
|
StartConsumer( // Wait until a consumer can start
|
|
IN PPRODCONS Synch // The synch object
|
|
);
|
|
|
|
DWORD // Win32 Errors
|
|
EndProducer( // See EndProdConsExInternal
|
|
IN PPRODCONS Synch // Synch object
|
|
);
|
|
|
|
DWORD // Win32 errors
|
|
EndConsumer( // See EndProdConsExInternal
|
|
IN PPRODCONS Synch // Synch object
|
|
);
|
|
|
|
|
|
//================================================================================
|
|
// End of file
|
|
//================================================================================
|
|
#endif ADT_H_INCLUDED
|