X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fui-file.h;h=4dc8a13e8d2c8b83d15e53f5b9d9ce17e5b63967;hb=65743aba62ae276dfb203e8771201e912545b0b5;hp=873b48cae1e235cddeeff4c473fa7609243f6e88;hpb=3e43a32aaa2d78fca10dea6746b820176f39bcc8;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ui-file.h b/gdb/ui-file.h index 873b48cae1..4dc8a13e8d 100644 --- a/gdb/ui-file.h +++ b/gdb/ui-file.h @@ -23,19 +23,19 @@ struct obstack; struct ui_file; -/* Create a generic ui_file object with null methods. */ +/* Create a generic ui_file object with null methods. */ extern struct ui_file *ui_file_new (void); /* Override methods used by specific implementations of a UI_FILE - object. */ + object. */ typedef void (ui_file_flush_ftype) (struct ui_file *stream); extern void set_ui_file_flush (struct ui_file *stream, ui_file_flush_ftype *flush); -/* NOTE: Both fputs and write methods are available. Default - implementations that mapping one onto the other are included. */ +/* NOTE: Both fputs and write methods are available. Default + implementations that mapping one onto the other are included. */ typedef void (ui_file_write_ftype) (struct ui_file *stream, const char *buf, long length_buf); extern void set_ui_file_write (struct ui_file *stream, @@ -45,6 +45,17 @@ typedef void (ui_file_fputs_ftype) (const char *, struct ui_file *stream); extern void set_ui_file_fputs (struct ui_file *stream, ui_file_fputs_ftype *fputs); +/* This version of "write" is safe for use in signal handlers. + It's not guaranteed that all existing output will have been + flushed first. + Implementations are also free to ignore some or all of the request. + fputs_async is not provided as the async versions are rarely used, + no point in having both for a rarely used interface. */ +typedef void (ui_file_write_async_safe_ftype) + (struct ui_file *stream, const char *buf, long length_buf); +extern void set_ui_file_write_async_safe + (struct ui_file *stream, ui_file_write_async_safe_ftype *write_async_safe); + typedef long (ui_file_read_ftype) (struct ui_file *stream, char *buf, long length_buf); extern void set_ui_file_read (struct ui_file *stream, @@ -83,14 +94,17 @@ extern int ui_file_isatty (struct ui_file *); extern void ui_file_write (struct ui_file *file, const char *buf, long length_buf); -/* NOTE: copies left to right */ +extern void ui_file_write_async_safe (struct ui_file *file, const char *buf, + long length_buf); + +/* NOTE: copies left to right. */ extern void ui_file_put (struct ui_file *src, ui_file_put_method_ftype *write, void *dest); /* Returns a freshly allocated buffer containing the entire contents of FILE (as determined by ui_file_put()) with a NUL character appended. LENGTH, if not NULL, is set to the size of the buffer - minus that appended NUL. */ + minus that appended NUL. */ extern char *ui_file_xstrdup (struct ui_file *file, long *length); /* Similar to ui_file_xstrdup, but return a new string allocated on @@ -100,16 +114,16 @@ extern char *ui_file_obsavestring (struct ui_file *file, extern long ui_file_read (struct ui_file *file, char *buf, long length_buf); -/* Create/open a memory based file. Can be used as a scratch buffer - for collecting output. */ +/* Create/open a memory based file. Can be used as a scratch buffer + for collecting output. */ extern struct ui_file *mem_fileopen (void); -/* Open/create a an STDIO based UI_FILE using the already open FILE. */ +/* Open/create a STDIO based UI_FILE using the already open FILE. */ extern struct ui_file *stdio_fileopen (FILE *file); -/* Open NAME returning an STDIO based UI_FILE. */ +/* Open NAME returning an STDIO based UI_FILE. */ extern struct ui_file *gdb_fopen (char *name, char *mode); /* Create a file which writes to both ONE and TWO. CLOSE_ONE