OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [libiberty/] [pexecute.txh] - Diff between revs 154 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
@c -*- mode: texinfo -*-
@c -*- mode: texinfo -*-
@deftypefn Extension {struct pex_obj *} pex_init (int @var{flags}, const char *@var{pname}, const char *@var{tempbase})
@deftypefn Extension {struct pex_obj *} pex_init (int @var{flags}, const char *@var{pname}, const char *@var{tempbase})
Prepare to execute one or more programs, with standard output of each
Prepare to execute one or more programs, with standard output of each
program fed to standard input of the next.  This is a system
program fed to standard input of the next.  This is a system
independent interface to execute a pipeline.
independent interface to execute a pipeline.
@var{flags} is a bitwise combination of the following:
@var{flags} is a bitwise combination of the following:
@table @code
@table @code
@vindex PEX_RECORD_TIMES
@vindex PEX_RECORD_TIMES
@item PEX_RECORD_TIMES
@item PEX_RECORD_TIMES
Record subprocess times if possible.
Record subprocess times if possible.
@vindex PEX_USE_PIPES
@vindex PEX_USE_PIPES
@item PEX_USE_PIPES
@item PEX_USE_PIPES
Use pipes for communication between processes, if possible.
Use pipes for communication between processes, if possible.
@vindex PEX_SAVE_TEMPS
@vindex PEX_SAVE_TEMPS
@item PEX_SAVE_TEMPS
@item PEX_SAVE_TEMPS
Don't delete temporary files used for communication between
Don't delete temporary files used for communication between
processes.
processes.
@end table
@end table
@var{pname} is the name of program to be executed, used in error
@var{pname} is the name of program to be executed, used in error
messages.  @var{tempbase} is a base name to use for any required
messages.  @var{tempbase} is a base name to use for any required
temporary files; it may be @code{NULL} to use a randomly chosen name.
temporary files; it may be @code{NULL} to use a randomly chosen name.
@end deftypefn
@end deftypefn
@deftypefn Extension {const char *} pex_run (struct pex_obj *@var{obj}, int @var{flags}, const char *@var{executable}, char * const *@var{argv}, const char *@var{outname}, const char *@var{errname}, int *@var{err})
@deftypefn Extension {const char *} pex_run (struct pex_obj *@var{obj}, int @var{flags}, const char *@var{executable}, char * const *@var{argv}, const char *@var{outname}, const char *@var{errname}, int *@var{err})
Execute one program in a pipeline.  On success this returns
Execute one program in a pipeline.  On success this returns
@code{NULL}.  On failure it returns an error message, a statically
@code{NULL}.  On failure it returns an error message, a statically
allocated string.
allocated string.
@var{obj} is returned by a previous call to @code{pex_init}.
@var{obj} is returned by a previous call to @code{pex_init}.
@var{flags} is a bitwise combination of the following:
@var{flags} is a bitwise combination of the following:
@table @code
@table @code
@vindex PEX_LAST
@vindex PEX_LAST
@item PEX_LAST
@item PEX_LAST
This must be set on the last program in the pipeline.  In particular,
This must be set on the last program in the pipeline.  In particular,
it should be set when executing a single program.  The standard output
it should be set when executing a single program.  The standard output
of the program will be sent to @var{outname}, or, if @var{outname} is
of the program will be sent to @var{outname}, or, if @var{outname} is
@code{NULL}, to the standard output of the calling program.  Do @emph{not}
@code{NULL}, to the standard output of the calling program.  Do @emph{not}
set this bit if you want to call @code{pex_read_output}
set this bit if you want to call @code{pex_read_output}
(described below).  After a call to @code{pex_run} with this bit set,
(described below).  After a call to @code{pex_run} with this bit set,
@var{pex_run} may no longer be called with the same @var{obj}.
@var{pex_run} may no longer be called with the same @var{obj}.
@vindex PEX_SEARCH
@vindex PEX_SEARCH
@item PEX_SEARCH
@item PEX_SEARCH
Search for the program using the user's executable search path.
Search for the program using the user's executable search path.
@vindex PEX_SUFFIX
@vindex PEX_SUFFIX
@item PEX_SUFFIX
@item PEX_SUFFIX
@var{outname} is a suffix.  See the description of @var{outname},
@var{outname} is a suffix.  See the description of @var{outname},
below.
below.
@vindex PEX_STDERR_TO_STDOUT
@vindex PEX_STDERR_TO_STDOUT
@item PEX_STDERR_TO_STDOUT
@item PEX_STDERR_TO_STDOUT
Send the program's standard error to standard output, if possible.
Send the program's standard error to standard output, if possible.
@vindex PEX_BINARY_INPUT
@vindex PEX_BINARY_INPUT
@vindex PEX_BINARY_OUTPUT
@vindex PEX_BINARY_OUTPUT
@item PEX_BINARY_INPUT
@item PEX_BINARY_INPUT
@itemx PEX_BINARY_OUTPUT
@itemx PEX_BINARY_OUTPUT
The standard input (output) of the program should be read (written) in
The standard input (output) of the program should be read (written) in
binary mode rather than text mode.  These flags are ignored on systems
binary mode rather than text mode.  These flags are ignored on systems
which do not distinguish binary mode and text mode, such as Unix.  For
which do not distinguish binary mode and text mode, such as Unix.  For
proper behavior these flags should match appropriately---a call to
proper behavior these flags should match appropriately---a call to
@code{pex_run} using @code{PEX_BINARY_OUTPUT} should be followed by a
@code{pex_run} using @code{PEX_BINARY_OUTPUT} should be followed by a
call using @code{PEX_BINARY_INPUT}.
call using @code{PEX_BINARY_INPUT}.
@end table
@end table
@var{executable} is the program to execute.  @var{argv} is the set of
@var{executable} is the program to execute.  @var{argv} is the set of
arguments to pass to the program; normally @code{@var{argv}[0]} will
arguments to pass to the program; normally @code{@var{argv}[0]} will
be a copy of @var{executable}.
be a copy of @var{executable}.
@var{outname} is used to set the name of the file to use for standard
@var{outname} is used to set the name of the file to use for standard
output.  There are two cases in which no output file will be used:
output.  There are two cases in which no output file will be used:
@enumerate
@enumerate
@item
@item
if @code{PEX_LAST} is not set in @var{flags}, and @code{PEX_USE_PIPES}
if @code{PEX_LAST} is not set in @var{flags}, and @code{PEX_USE_PIPES}
was set in the call to @code{pex_init}, and the system supports pipes
was set in the call to @code{pex_init}, and the system supports pipes
@item
@item
if @code{PEX_LAST} is set in @var{flags}, and @var{outname} is
if @code{PEX_LAST} is set in @var{flags}, and @var{outname} is
@code{NULL}
@code{NULL}
@end enumerate
@end enumerate
@noindent
@noindent
Otherwise the code will use a file to hold standard
Otherwise the code will use a file to hold standard
output.  If @code{PEX_LAST} is not set, this file is considered to be
output.  If @code{PEX_LAST} is not set, this file is considered to be
a temporary file, and it will be removed when no longer needed, unless
a temporary file, and it will be removed when no longer needed, unless
@code{PEX_SAVE_TEMPS} was set in the call to @code{pex_init}.
@code{PEX_SAVE_TEMPS} was set in the call to @code{pex_init}.
There are two cases to consider when setting the name of the file to
There are two cases to consider when setting the name of the file to
hold standard output.
hold standard output.
@enumerate
@enumerate
@item
@item
@code{PEX_SUFFIX} is set in @var{flags}.  In this case
@code{PEX_SUFFIX} is set in @var{flags}.  In this case
@var{outname} may not be @code{NULL}.  If the @var{tempbase} parameter
@var{outname} may not be @code{NULL}.  If the @var{tempbase} parameter
to @code{pex_init} was not @code{NULL}, then the output file name is
to @code{pex_init} was not @code{NULL}, then the output file name is
the concatenation of @var{tempbase} and @var{outname}.  If
the concatenation of @var{tempbase} and @var{outname}.  If
@var{tempbase} was @code{NULL}, then the output file name is a random
@var{tempbase} was @code{NULL}, then the output file name is a random
file name ending in @var{outname}.
file name ending in @var{outname}.
@item
@item
@code{PEX_SUFFIX} was not set in @var{flags}.  In this
@code{PEX_SUFFIX} was not set in @var{flags}.  In this
case, if @var{outname} is not @code{NULL}, it is used as the output
case, if @var{outname} is not @code{NULL}, it is used as the output
file name.  If @var{outname} is @code{NULL}, and @var{tempbase} was
file name.  If @var{outname} is @code{NULL}, and @var{tempbase} was
not NULL, the output file name is randomly chosen using
not NULL, the output file name is randomly chosen using
@var{tempbase}.  Otherwise the output file name is chosen completely
@var{tempbase}.  Otherwise the output file name is chosen completely
at random.
at random.
@end enumerate
@end enumerate
@var{errname} is the file name to use for standard error output.  If
@var{errname} is the file name to use for standard error output.  If
it is @code{NULL}, standard error is the same as the caller's.
it is @code{NULL}, standard error is the same as the caller's.
Otherwise, standard error is written to the named file.
Otherwise, standard error is written to the named file.
On an error return, the code sets @code{*@var{err}} to an @code{errno}
On an error return, the code sets @code{*@var{err}} to an @code{errno}
value, or to 0 if there is no relevant @code{errno}.
value, or to 0 if there is no relevant @code{errno}.
@end deftypefn
@end deftypefn
@deftypefn Extension {const char *} pex_run_in_environment (struct pex_obj *@var{obj}, int @var{flags}, const char *@var{executable}, char * const *@var{argv}, char * const *@var{env}, int @var{env_size}, const char *@var{outname}, const char *@var{errname}, int *@var{err})
@deftypefn Extension {const char *} pex_run_in_environment (struct pex_obj *@var{obj}, int @var{flags}, const char *@var{executable}, char * const *@var{argv}, char * const *@var{env}, int @var{env_size}, const char *@var{outname}, const char *@var{errname}, int *@var{err})
Execute one program in a pipeline, permitting the environment for the
Execute one program in a pipeline, permitting the environment for the
program to be specified.  Behaviour and parameters not listed below are
program to be specified.  Behaviour and parameters not listed below are
as for @code{pex_run}.
as for @code{pex_run}.
@var{env} is the environment for the child process, specified as an array of
@var{env} is the environment for the child process, specified as an array of
character pointers.  Each element of the array should point to a string of the
character pointers.  Each element of the array should point to a string of the
form @code{VAR=VALUE}, with the exception of the last element that must be
form @code{VAR=VALUE}, with the exception of the last element that must be
@code{NULL}.
@code{NULL}.
@end deftypefn
@end deftypefn
@deftypefn Extension {FILE *} pex_input_file (struct pex_obj *@var{obj}, int @var{flags}, const char *@var{in_name})
@deftypefn Extension {FILE *} pex_input_file (struct pex_obj *@var{obj}, int @var{flags}, const char *@var{in_name})
Return a stream for a temporary file to pass to the first program in
Return a stream for a temporary file to pass to the first program in
the pipeline as input.
the pipeline as input.
The name of the input file is chosen according to the same rules
The name of the input file is chosen according to the same rules
@code{pex_run} uses to choose output file names, based on
@code{pex_run} uses to choose output file names, based on
@var{in_name}, @var{obj} and the @code{PEX_SUFFIX} bit in @var{flags}.
@var{in_name}, @var{obj} and the @code{PEX_SUFFIX} bit in @var{flags}.
Don't call @code{fclose} on the returned stream; the first call to
Don't call @code{fclose} on the returned stream; the first call to
@code{pex_run} closes it automatically.
@code{pex_run} closes it automatically.
If @var{flags} includes @code{PEX_BINARY_OUTPUT}, open the stream in
If @var{flags} includes @code{PEX_BINARY_OUTPUT}, open the stream in
binary mode; otherwise, open it in the default mode.  Including
binary mode; otherwise, open it in the default mode.  Including
@code{PEX_BINARY_OUTPUT} in @var{flags} has no effect on Unix.
@code{PEX_BINARY_OUTPUT} in @var{flags} has no effect on Unix.
@end deftypefn
@end deftypefn
@deftypefn Extension {FILE *} pex_input_pipe (struct pex_obj *@var{obj}, int @var{binary})
@deftypefn Extension {FILE *} pex_input_pipe (struct pex_obj *@var{obj}, int @var{binary})
Return a stream @var{fp} for a pipe connected to the standard input of
Return a stream @var{fp} for a pipe connected to the standard input of
the first program in the pipeline; @var{fp} is opened for writing.
the first program in the pipeline; @var{fp} is opened for writing.
You must have passed @code{PEX_USE_PIPES} to the @code{pex_init} call
You must have passed @code{PEX_USE_PIPES} to the @code{pex_init} call
that returned @var{obj}.
that returned @var{obj}.
You must close @var{fp} using @code{fclose} yourself when you have
You must close @var{fp} using @code{fclose} yourself when you have
finished writing data to the pipeline.
finished writing data to the pipeline.
The file descriptor underlying @var{fp} is marked not to be inherited
The file descriptor underlying @var{fp} is marked not to be inherited
by child processes.
by child processes.
On systems that do not support pipes, this function returns
On systems that do not support pipes, this function returns
@code{NULL}, and sets @code{errno} to @code{EINVAL}.  If you would
@code{NULL}, and sets @code{errno} to @code{EINVAL}.  If you would
like to write code that is portable to all systems the @code{pex}
like to write code that is portable to all systems the @code{pex}
functions support, consider using @code{pex_input_file} instead.
functions support, consider using @code{pex_input_file} instead.
There are two opportunities for deadlock using
There are two opportunities for deadlock using
@code{pex_input_pipe}:
@code{pex_input_pipe}:
@itemize @bullet
@itemize @bullet
@item
@item
Most systems' pipes can buffer only a fixed amount of data; a process
Most systems' pipes can buffer only a fixed amount of data; a process
that writes to a full pipe blocks.  Thus, if you write to @file{fp}
that writes to a full pipe blocks.  Thus, if you write to @file{fp}
before starting the first process, you run the risk of blocking when
before starting the first process, you run the risk of blocking when
there is no child process yet to read the data and allow you to
there is no child process yet to read the data and allow you to
continue.  @code{pex_input_pipe} makes no promises about the
continue.  @code{pex_input_pipe} makes no promises about the
size of the pipe's buffer, so if you need to write any data at all
size of the pipe's buffer, so if you need to write any data at all
before starting the first process in the pipeline, consider using
before starting the first process in the pipeline, consider using
@code{pex_input_file} instead.
@code{pex_input_file} instead.
@item
@item
Using @code{pex_input_pipe} and @code{pex_read_output} together
Using @code{pex_input_pipe} and @code{pex_read_output} together
may also cause deadlock.  If the output pipe fills up, so that each
may also cause deadlock.  If the output pipe fills up, so that each
program in the pipeline is waiting for the next to read more data, and
program in the pipeline is waiting for the next to read more data, and
you fill the input pipe by writing more data to @var{fp}, then there
you fill the input pipe by writing more data to @var{fp}, then there
is no way to make progress: the only process that could read data from
is no way to make progress: the only process that could read data from
the output pipe is you, but you are blocked on the input pipe.
the output pipe is you, but you are blocked on the input pipe.
@end itemize
@end itemize
@end deftypefn
@end deftypefn
@deftypefn Extension {FILE *} pex_read_output (struct pex_obj *@var{obj}, int @var{binary})
@deftypefn Extension {FILE *} pex_read_output (struct pex_obj *@var{obj}, int @var{binary})
Returns a @code{FILE} pointer which may be used to read the standard
Returns a @code{FILE} pointer which may be used to read the standard
output of the last program in the pipeline.  When this is used,
output of the last program in the pipeline.  When this is used,
@code{PEX_LAST} should not be used in a call to @code{pex_run}.  After
@code{PEX_LAST} should not be used in a call to @code{pex_run}.  After
this is called, @code{pex_run} may no longer be called with the same
this is called, @code{pex_run} may no longer be called with the same
@var{obj}.  @var{binary} should be non-zero if the file should be
@var{obj}.  @var{binary} should be non-zero if the file should be
opened in binary mode.  Don't call @code{fclose} on the returned file;
opened in binary mode.  Don't call @code{fclose} on the returned file;
it will be closed by @code{pex_free}.
it will be closed by @code{pex_free}.
@end deftypefn
@end deftypefn
@deftypefn Extension int pex_get_status (struct pex_obj *@var{obj}, int @var{count}, int *@var{vector})
@deftypefn Extension int pex_get_status (struct pex_obj *@var{obj}, int @var{count}, int *@var{vector})
Returns the exit status of all programs run using @var{obj}.
Returns the exit status of all programs run using @var{obj}.
@var{count} is the number of results expected.  The results will be
@var{count} is the number of results expected.  The results will be
placed into @var{vector}.  The results are in the order of the calls
placed into @var{vector}.  The results are in the order of the calls
to @code{pex_run}.  Returns 0 on error, 1 on success.
to @code{pex_run}.  Returns 0 on error, 1 on success.
@end deftypefn
@end deftypefn
@deftypefn Extension int pex_get_times (struct pex_obj *@var{obj}, int @var{count}, struct pex_time *@var{vector})
@deftypefn Extension int pex_get_times (struct pex_obj *@var{obj}, int @var{count}, struct pex_time *@var{vector})
Returns the process execution times of all programs run using
Returns the process execution times of all programs run using
@var{obj}.  @var{count} is the number of results expected.  The
@var{obj}.  @var{count} is the number of results expected.  The
results will be placed into @var{vector}.  The results are in the
results will be placed into @var{vector}.  The results are in the
order of the calls to @code{pex_run}.  Returns 0 on error, 1 on
order of the calls to @code{pex_run}.  Returns 0 on error, 1 on
success.
success.
@code{struct pex_time} has the following fields of the type
@code{struct pex_time} has the following fields of the type
@code{unsigned long}: @code{user_seconds},
@code{unsigned long}: @code{user_seconds},
@code{user_microseconds}, @code{system_seconds},
@code{user_microseconds}, @code{system_seconds},
@code{system_microseconds}.  On systems which do not support reporting
@code{system_microseconds}.  On systems which do not support reporting
process times, all the fields will be set to @code{0}.
process times, all the fields will be set to @code{0}.
@end deftypefn
@end deftypefn
@deftypefn Extension void pex_free (struct pex_obj @var{obj})
@deftypefn Extension void pex_free (struct pex_obj @var{obj})
Clean up and free all data associated with @var{obj}.
Clean up and free all data associated with @var{obj}.
@end deftypefn
@end deftypefn
@deftypefn Extension {const char *} pex_one (int @var{flags}, const char *@var{executable}, char * const *@var{argv}, const char *@var{pname}, const char *@var{outname}, const char *@var{errname}, int *@var{status}, int *@var{err})
@deftypefn Extension {const char *} pex_one (int @var{flags}, const char *@var{executable}, char * const *@var{argv}, const char *@var{pname}, const char *@var{outname}, const char *@var{errname}, int *@var{status}, int *@var{err})
An interface to permit the easy execution of a
An interface to permit the easy execution of a
single program.  The return value and most of the parameters are as
single program.  The return value and most of the parameters are as
for a call to @code{pex_run}.  @var{flags} is restricted to a
for a call to @code{pex_run}.  @var{flags} is restricted to a
combination of @code{PEX_SEARCH}, @code{PEX_STDERR_TO_STDOUT}, and
combination of @code{PEX_SEARCH}, @code{PEX_STDERR_TO_STDOUT}, and
@code{PEX_BINARY_OUTPUT}.  @var{outname} is interpreted as if
@code{PEX_BINARY_OUTPUT}.  @var{outname} is interpreted as if
@code{PEX_LAST} were set.  On a successful return, @code{*@var{status}} will
@code{PEX_LAST} were set.  On a successful return, @code{*@var{status}} will
be set to the exit status of the program.
be set to the exit status of the program.
@end deftypefn
@end deftypefn
@deftypefn Extension int pexecute (const char *@var{program}, char * const *@var{argv}, const char *@var{this_pname}, const char *@var{temp_base}, char **@var{errmsg_fmt}, char **@var{errmsg_arg}, int flags)
@deftypefn Extension int pexecute (const char *@var{program}, char * const *@var{argv}, const char *@var{this_pname}, const char *@var{temp_base}, char **@var{errmsg_fmt}, char **@var{errmsg_arg}, int flags)
This is the old interface to execute one or more programs.  It is
This is the old interface to execute one or more programs.  It is
still supported for compatibility purposes, but is no longer
still supported for compatibility purposes, but is no longer
documented.
documented.
@end deftypefn
@end deftypefn
@deftypefn Extension int pwait (int @var{pid}, int *@var{status}, int @var{flags})
@deftypefn Extension int pwait (int @var{pid}, int *@var{status}, int @var{flags})
Another part of the old execution interface.
Another part of the old execution interface.
@end deftypefn
@end deftypefn
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.