µOS++ IIIe Reference 7.0.0
The third edition of µOS++, a POSIX inspired open source framework, written in C++
Loading...
Searching...
No Matches
os::posix::io_impl Class Referenceabstract

#include <io.h>

+ Inheritance diagram for os::posix::io_impl:

Public Member Functions

Constructors & Destructor
 io_impl (void)
 
virtual ~io_impl ()
 
Public Member Functions
virtual void do_deallocate (void)
 
virtual bool do_is_opened (void)=0
 
virtual bool do_is_connected (void)
 
virtual ssize_t do_read (void *buf, std::size_t nbyte)=0
 
virtual ssize_t do_write (const void *buf, std::size_t nbyte)=0
 
virtual ssize_t do_writev (const iovec *iov, int iovcnt)
 
virtual int do_vfcntl (int cmd, std::va_list args)
 
virtual int do_isatty (void)
 
virtual int do_fstat (struct stat *buf)
 
virtual off_t do_lseek (off_t offset, int whence)=0
 
virtual int do_close (void)=0
 
off_t offset (void)
 
void offset (off_t offset)
 

Friends

class io
 

Detailed Description

Definition at line 303 of file io.h.

Constructor & Destructor Documentation

◆ io_impl()

os::posix::io_impl::io_impl ( void  )

Definition at line 467 of file io.cpp.

468 {
469#if defined(OS_TRACE_POSIX_IO_IO)
470 trace::printf ("io_impl::%s()=%p\n", __func__, this);
471#endif
472 }
int printf(const char *format,...)
Write a formatted string to the trace device.
Definition trace.cpp:59

References os::trace::printf().

◆ ~io_impl()

os::posix::io_impl::~io_impl ( )
virtual

Definition at line 474 of file io.cpp.

475 {
476#if defined(OS_TRACE_POSIX_IO_IO)
477 trace::printf ("io_impl::%s() @%p\n", __func__, this);
478#endif
479 }

References os::trace::printf().

Member Function Documentation

◆ do_close()

virtual int os::posix::io_impl::do_close ( void  )
pure virtual

◆ do_deallocate()

void os::posix::io_impl::do_deallocate ( void  )
virtual

Definition at line 482 of file io.cpp.

483 {
484 return;
485 }

◆ do_fstat()

int os::posix::io_impl::do_fstat ( struct stat buf)
virtual

Definition at line 539 of file io.cpp.

540 {
541 errno = ENOSYS; // Not implemented
542 return -1;
543 }

Referenced by os::posix::io::fstat().

◆ do_is_connected()

bool os::posix::io_impl::do_is_connected ( void  )
virtual

Definition at line 496 of file io.cpp.

497 {
498 return true;
499 }

◆ do_is_opened()

virtual bool os::posix::io_impl::do_is_opened ( void  )
pure virtual

Implemented in os::posix::device_impl.

Referenced by os::posix::io::is_opened().

◆ do_isatty()

int os::posix::io_impl::do_isatty ( void  )
virtual

Reimplemented in os::posix::tty_impl.

Definition at line 532 of file io.cpp.

533 {
534 errno = ENOTTY; // By default, it is not a TTY.
535 return 0;
536 }

Referenced by os::posix::io::isatty().

◆ do_lseek()

virtual off_t os::posix::io_impl::do_lseek ( off_t  offset,
int  whence 
)
pure virtual

◆ do_read()

virtual ssize_t os::posix::io_impl::do_read ( void *  buf,
std::size_t  nbyte 
)
pure virtual

Implemented in os::posix::block_device_impl.

Referenced by os::posix::io::read().

◆ do_vfcntl()

int os::posix::io_impl::do_vfcntl ( int  cmd,
std::va_list  args 
)
virtual

Definition at line 525 of file io.cpp.

526 {
527 errno = ENOSYS; // Not implemented
528 return -1;
529 }

Referenced by os::posix::io::vfcntl().

◆ do_write()

virtual ssize_t os::posix::io_impl::do_write ( const void *  buf,
std::size_t  nbyte 
)
pure virtual

◆ do_writev()

ssize_t os::posix::io_impl::do_writev ( const iovec iov,
int  iovcnt 
)
virtual

Definition at line 502 of file io.cpp.

503 {
504 ssize_t total = 0;
505
506#pragma GCC diagnostic push
507#if defined(__clang__)
508#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
509#endif
510 const /* struct */ iovec* p = iov;
511 for (int i = 0; i < iovcnt; ++i, ++p)
512 {
513 ssize_t ret = do_write (p->iov_base, p->iov_len);
514 if (ret < 0)
515 {
516 return ret;
517 }
518 total += ret;
519 }
520#pragma GCC diagnostic pop
521 return total;
522 }
virtual ssize_t do_write(const void *buf, std::size_t nbyte)=0
Definition uio.h:40
void * iov_base
Definition uio.h:41
size_t iov_len
Definition uio.h:42

References do_write(), iovec::iov_base, and iovec::iov_len.

Referenced by os::posix::io::writev().

◆ offset() [1/2]

void os::posix::io_impl::offset ( off_t  offset)
inline

Definition at line 478 of file io.h.

479 {
480 offset_ = offset;
481 }
off_t offset(void)
Definition io.h:472

References offset().

◆ offset() [2/2]

off_t os::posix::io_impl::offset ( void  )
inline

Definition at line 472 of file io.h.

473 {
474 return offset_;
475 }

Referenced by os::posix::block_device_partition_impl::configure(), os::posix::block_device_impl::do_lseek(), and offset().

Friends And Related Symbol Documentation

◆ io

friend class io
friend

Definition at line 307 of file io.h.


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