X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gold%2Fdescriptors.h;h=c14ac077744dfbd87f94235299ffb8a0e36b26a4;hb=89e0345fdfad506e4692126cabd618ef859dc63f;hp=19333149287637dd9b22748ce9e324e03a00da45;hpb=0f7c0701ba26bd4c94e968f6be5c954819c97f81;p=platform%2Fupstream%2Fbinutils.git diff --git a/gold/descriptors.h b/gold/descriptors.h index 1933314..c14ac07 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-2014 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 @@ -69,6 +73,8 @@ class Descriptors bool inuse; // Whether this is a write descriptor. bool is_write; + // Whether the descriptor is on the stack. + bool is_on_stack; }; bool @@ -76,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. @@ -100,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)