Ruby 3.5.0dev (2025-05-16 revision 04f538c1441e65def90d5b4224010e7d4f4ffab3)
Data Fields
rb_io Struct Reference

Ruby's IO, metadata and buffers. More...

#include <io.h>

Data Fields

VALUE self
 The IO's Ruby level counterpart.
 
FILEstdio_file
 stdio ptr for read/write, if available.
 
int fd
 file descriptor.
 
enum rb_io_mode mode
 mode flags: FMODE_XXXs
 
rb_pid_t pid
 child's pid (for pipes)
 
int lineno
 number of lines read
 
VALUE pathv
 pathname for file
 
void(* finalize )(struct rb_io *, int)
 finalize proc
 
rb_io_buffer_t wbuf
 Write buffer.
 
rb_io_buffer_t rbuf
 (Byte) read buffer.
 
VALUE tied_io_for_writing
 Duplex IO object, if set.
 
struct rb_io_encoding encs
 Decomposed encoding flags.
 
rb_econv_treadconv
 Encoding converter used when reading from this IO.
 
rb_io_buffer_t cbuf
 rb_io_ungetc() destination.
 
rb_econv_twriteconv
 Encoding converter used when writing to this IO.
 
VALUE writeconv_asciicompat
 This is, when set, an instance of rb_cString which holds the "common" encoding.
 
int writeconv_initialized
 Whether rb_io_t::writeconv is already set up.
 
int writeconv_pre_ecflags
 Value of ::rb_io_t::rb_io_enc_t::ecflags stored right before initialising rb_io_t::writeconv.
 
VALUE writeconv_pre_ecopts
 Value of ::rb_io_t::rb_io_enc_t::ecopts stored right before initialising rb_io_t::writeconv.
 
VALUE write_lock
 This is a Ruby level mutex.
 
VALUE timeout
 The timeout associated with this IO when performing blocking operations.
 
struct ccan_list_head blocking_operations
 Threads that are performing a blocking operation without the GVL using this IO.
 
struct rb_execution_context_structclosing_ec
 
VALUE wakeup_mutex
 
rb_serial_t fork_generation
 

Detailed Description

Ruby's IO, metadata and buffers.

Definition at line 280 of file io.h.

Field Documentation

◆ blocking_operations

struct ccan_list_head rb_io::blocking_operations

Threads that are performing a blocking operation without the GVL using this IO.

On calling IO::close, these threads will be interrupted so that the operation can be cancelled.

Definition at line 131 of file io.h.

Referenced by rb_io_open_descriptor().

◆ cbuf

rb_io_buffer_t rb_io::cbuf

rb_io_ungetc() destination.

This buffer is read before checking rb_io_t::rbuf

Definition at line 344 of file io.h.

Referenced by rb_io_ungetc().

◆ closing_ec

struct rb_execution_context_struct* rb_io::closing_ec

Definition at line 132 of file io.h.

◆ encs

struct rb_io_encoding rb_io::encs

Decomposed encoding flags.

Definition at line 333 of file io.h.

Referenced by rb_io_open_descriptor().

◆ fd

int rb_io::fd

◆ finalize

void(* rb_io::finalize)(struct rb_io *, int)

finalize proc

Definition at line 311 of file io.h.

◆ fork_generation

rb_serial_t rb_io::fork_generation

Definition at line 136 of file io.h.

◆ lineno

int rb_io::lineno

number of lines read

Definition at line 303 of file io.h.

◆ mode

enum rb_io_mode rb_io::mode

◆ pathv

VALUE rb_io::pathv

pathname for file

Definition at line 307 of file io.h.

Referenced by rb_file_size(), rb_io_open_descriptor(), rb_io_path(), and rb_io_set_nonblock().

◆ pid

rb_pid_t rb_io::pid

child's pid (for pipes)

Definition at line 299 of file io.h.

◆ rbuf

rb_io_buffer_t rb_io::rbuf

(Byte) read buffer.

Note also that there is a field called rb_io_t::cbuf, which also concerns read IO.

Definition at line 322 of file io.h.

Referenced by rb_io_check_writable(), and rb_io_getbyte().

◆ readconv

rb_econv_t * rb_io::readconv

Encoding converter used when reading from this IO.

Definition at line 337 of file io.h.

Referenced by rb_io_binmode().

◆ self

VALUE rb_io::self

The IO's Ruby level counterpart.

Definition at line 283 of file io.h.

Referenced by rb_io_open_descriptor(), and rb_io_read_check().

◆ stdio_file

FILE * rb_io::stdio_file

stdio ptr for read/write, if available.

Definition at line 287 of file io.h.

Referenced by rb_io_stdio_file().

◆ tied_io_for_writing

VALUE rb_io::tied_io_for_writing

Duplex IO object, if set.

See also
rb_io_set_write_io()

Definition at line 330 of file io.h.

Referenced by rb_io_check_char_readable(), rb_io_get_write_io(), and rb_io_set_write_io().

◆ timeout

VALUE rb_io::timeout

The timeout associated with this IO when performing blocking operations.

Definition at line 391 of file io.h.

Referenced by rb_io_open_descriptor(), rb_io_set_timeout(), rb_io_timeout(), and rb_io_wait().

◆ wakeup_mutex

VALUE rb_io::wakeup_mutex

Definition at line 133 of file io.h.

◆ wbuf

rb_io_buffer_t rb_io::wbuf

Write buffer.

Definition at line 315 of file io.h.

Referenced by rb_io_check_char_readable().

◆ write_lock

VALUE rb_io::write_lock

This is a Ruby level mutex.

It avoids multiple threads to write to an IO at once; helps for instance rb_io_puts() to ensure newlines right next to its arguments.

This of course doesn't help inter-process IO interleaves, though.

Definition at line 385 of file io.h.

◆ writeconv

rb_econv_t * rb_io::writeconv

Encoding converter used when writing to this IO.

Definition at line 348 of file io.h.

Referenced by rb_io_binmode().

◆ writeconv_asciicompat

VALUE rb_io::writeconv_asciicompat

This is, when set, an instance of rb_cString which holds the "common" encoding.

Write conversion can convert strings twice... In case conversion from encoding X to encoding Y does not exist, Ruby finds an encoding Z that bridges the two, so that X to Z to Y conversion happens.

Definition at line 357 of file io.h.

◆ writeconv_initialized

int rb_io::writeconv_initialized

Whether rb_io_t::writeconv is already set up.

Definition at line 361 of file io.h.

◆ writeconv_pre_ecflags

int rb_io::writeconv_pre_ecflags

Value of ::rb_io_t::rb_io_enc_t::ecflags stored right before initialising rb_io_t::writeconv.

Definition at line 368 of file io.h.

Referenced by rb_io_binmode().

◆ writeconv_pre_ecopts

VALUE rb_io::writeconv_pre_ecopts

Value of ::rb_io_t::rb_io_enc_t::ecopts stored right before initialising rb_io_t::writeconv.

Definition at line 375 of file io.h.


The documentation for this struct was generated from the following files: