X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gold%2Fdescriptors.h;h=f1c2ad701b584ae241c7f07b0b6209bc07188b39;hb=8cd0e5e93145699736a370b271ff03f3f41670b0;hp=44c2475087efd734cbeff36a74615b5c1f69f976;hpb=61edd21fa41ccf31fe391ee320c4812c4d45486a;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/descriptors.h b/gold/descriptors.h index 44c2475087..f1c2ad701b 100644 --- a/gold/descriptors.h +++ b/gold/descriptors.h @@ -1,6 +1,6 @@ // descriptors.h -- manage file descriptors for gold -*- C++ -*- -// Copyright 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2008-2020 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of gold. @@ -25,11 +25,11 @@ #include +#include "gold-threads.h" + namespace gold { -class Lock; - // This class manages file descriptors for gold. class Descriptors @@ -56,6 +56,10 @@ class Descriptors void release(int descriptor, bool permanent); + // Close all the descriptors open for reading. + void + close_all(); + private: // Information kept for a descriptor. struct Open_descriptor @@ -78,6 +82,8 @@ class Descriptors // We need to lock before accessing any fields. Lock* lock_; + // Used to initialize the lock_ field exactly once. + Initialize_lock initialize_lock_; // Information for descriptors. std::vector open_descriptors_; // Top of stack. @@ -102,6 +108,10 @@ inline void release_descriptor(int descriptor, bool permanent) { descriptors.release(descriptor, permanent); } +inline void +close_all_descriptors() +{ descriptors.close_all(); } + } // End namespace gold. #endif // !defined(GOLD_DESCRIPTORS_H)