## NAME

ACE_Errno_Guard - Provides a wrapper to improve performance when thread-specific errno must be saved and restored in a block of code.

## SYNOPSIS

    #include <ace/OS.h>

    class ACE_Errno_Guard
    {
      public:
        ACE_Errno_Guard (int &errno_ref, int error);
        ACE_Errno_Guard (int &errno_ref);
        ~ACE_Errno_Guard (void);
        int operator= (int error);
        int operator== (int error);
        int operator!= (int error);
      private:
        int *errno_ptr_;
        int error_;
    };

## DESCRIPTION

The typical use-case for this is the following:

int error = errno; call_some_function_that_might_change_errno (); errno = error;

This can be replaced with

{ ACE_Errno_Guard guard (errno); call_some_function_that_might_change_errno (); }

This implementation is more elegant and more efficient since it avoids an unnecessary second access to thread-specific storage by caching a pointer to the value of errno in TSS.

## Initialization and termination methods.

    ACE_Errno_Guard (int &errno_ref, int error);

Stash the value of `error` into `error_` and initialize the `errno_ptr_` to the address of `errno_ref`.

    ACE_Errno_Guard (int &errno_ref);

Stash the value of `errno` into `error_` and initialize the `errno_ptr_` to the address of `errno_ref`.

    ~ACE_Errno_Guard (void);

Reset the value of `errno` to `error`.

    int operator= (int error);

Assign `error` to `error_`.

    int operator== (int error);

Compare `error` with `error_` for equality.

    int operator!= (int error);

Compare `error` with `error_` for inequality.

## AUTHOR

Doug Schmidt `schmidt@cs.wustl.edu`, Jesper S. M|ller `stophph@diku.dk`, and a cast of thousands...

## The ACE_Sched_Priority type should be used for platform-

independent thread and process priorities, by convention. int should be used for OS-specific priorities.

## typedef for the _stat data structure

## Giving unique ACE scoped names for some important

RTSignal-Related constants. Becuase sometimes, different platforms use different names for these constants.

## LIBRARY

ace