1// LazyInitializable.h 2 3#ifndef USERLAND_FS_LAZY_INITIALIZABLE_H 4#define USERLAND_FS_LAZY_INITIALIZABLE_H 5 6#include <OS.h> 7 8namespace UserlandFSUtil { 9 10class LazyInitializable { 11public: 12 LazyInitializable(); 13 LazyInitializable(bool init); 14 virtual ~LazyInitializable(); 15 16 status_t Access(); 17 status_t InitCheck() const; 18 19protected: 20 virtual status_t FirstTimeInit() = 0; 21 22protected: 23 status_t fInitStatus; 24 sem_id fInitSemaphore; 25}; 26 27} // namespace UserlandFSUtil 28 29using UserlandFSUtil::LazyInitializable; 30 31#endif // USERLAND_FS_LAZY_INITIALIZABLE_H 32