XRootD
XrdSys::KernelBuffer Class Reference

#include <XrdSysKernelBuffer.hh>

+ Collaboration diagram for XrdSys::KernelBuffer:

Public Member Functions

 KernelBuffer ()
 Default constructor. More...
 
 KernelBuffer (const KernelBuffer &)=delete
 Copy constructor - deleted. More...
 
 KernelBuffer (KernelBuffer &&kbuff)
 
 ~KernelBuffer ()
 Destructor. More...
 
bool Empty () const
 
KernelBufferoperator= (const KernelBuffer &)=delete
 Copy assignment operator - deleted. More...
 
KernelBufferoperator= (KernelBuffer &&kbuff)
 Move assignment operator. More...
 

Static Public Member Functions

static bool IsPageAligned (const void *ptr)
 

Friends

ssize_t Move (char *&, KernelBuffer &, size_t)
 
ssize_t Move (KernelBuffer &, char *&)
 
ssize_t Read (int, KernelBuffer &, uint32_t)
 
ssize_t Read (int, KernelBuffer &, uint32_t, int64_t)
 
ssize_t Send (int, KernelBuffer &)
 
ssize_t Write (int, KernelBuffer &, int64_t)
 

Detailed Description

A utility class for manipulating kernel space buffers

(Encapsulates the splice vmsplice & syscalls.)

Definition at line 45 of file XrdSysKernelBuffer.hh.

Constructor & Destructor Documentation

◆ KernelBuffer() [1/3]

XrdSys::KernelBuffer::KernelBuffer ( )
inline

Default constructor.

Definition at line 64 of file XrdSysKernelBuffer.hh.

64  : capacity( 0 ), size( 0 )
65  {
66  }

◆ KernelBuffer() [2/3]

XrdSys::KernelBuffer::KernelBuffer ( const KernelBuffer )
delete

Copy constructor - deleted.

◆ KernelBuffer() [3/3]

XrdSys::KernelBuffer::KernelBuffer ( KernelBuffer &&  kbuff)
inline

Definition at line 76 of file XrdSysKernelBuffer.hh.

76  : capacity( kbuff.capacity ),
77  size( kbuff.size ),
78  pipes( std::move( kbuff.pipes ) )
79  {
80  capacity = 0;
81  size = 0;
82  }

◆ ~KernelBuffer()

XrdSys::KernelBuffer::~KernelBuffer ( )
inline

Destructor.

Definition at line 103 of file XrdSysKernelBuffer.hh.

104  {
105  if( capacity > 0 ) Free();
106  }

Member Function Documentation

◆ Empty()

bool XrdSys::KernelBuffer::Empty ( ) const
inline
Returns
: true is buffer is empty, false otherwise

Definition at line 111 of file XrdSysKernelBuffer.hh.

112  {
113  return size == 0;
114  }

Referenced by XrdCl::XRootDMsgHandler::WriteMessageBody().

+ Here is the caller graph for this function:

◆ IsPageAligned()

static bool XrdSys::KernelBuffer::IsPageAligned ( const void *  ptr)
inlinestatic

Check if the user space buffer is page aligned

Parameters
ptr: user space buffer
Returns
: true if the buffer is page aligned, false otherwise

Definition at line 123 of file XrdSysKernelBuffer.hh.

124  {
125  return ( ( uintptr_t ( ptr ) ) % PAGE_SZ ) == 0 ;
126  }

Referenced by XrdCl::FileStateHandler::Write().

+ Here is the caller graph for this function:

◆ operator=() [1/2]

KernelBuffer& XrdSys::KernelBuffer::operator= ( const KernelBuffer )
delete

Copy assignment operator - deleted.

◆ operator=() [2/2]

KernelBuffer& XrdSys::KernelBuffer::operator= ( KernelBuffer &&  kbuff)
inline

Move assignment operator.

Definition at line 92 of file XrdSysKernelBuffer.hh.

93  {
94  capacity = kbuff.capacity;
95  size = kbuff.size;
96  pipes = std::move( kbuff.pipes );
97  return *this;
98  }

Friends And Related Function Documentation

◆ Move [1/2]

ssize_t Move ( char *&  ubuff,
KernelBuffer kbuff,
size_t  length 
)
friend

Utility function for moving a user space buffer to kernel space.

See also
KernelBuffer::FromUser

Definition at line 462 of file XrdSysKernelBuffer.hh.

463  {
464  return kbuff.FromUser( ubuff, length );
465  }

◆ Move [2/2]

ssize_t Move ( KernelBuffer kbuff,
char *&  ubuff 
)
friend

Utility function for moving a kernel buffer to user space.

See also
KernelBuffer::ToUser

Definition at line 452 of file XrdSysKernelBuffer.hh.

453  {
454  return kbuff.ToUser( ubuff );
455  }

◆ Read [1/2]

ssize_t Read ( int  fd,
KernelBuffer buffer,
uint32_t  length 
)
friend

Utility function for reading data from a file descriptor into a kernel buffer.

See also
KernelBuffer::ReadFromFD

Definition at line 421 of file XrdSysKernelBuffer.hh.

422  {
423  return buffer.ReadFromFD( fd, length, NULL );
424  }

◆ Read [2/2]

ssize_t Read ( int  fd,
KernelBuffer buffer,
uint32_t  length,
int64_t  offset 
)
friend

Utility function for reading data from a file descriptor into a kernel buffer.

See also
KernelBuffer::ReadFromFD

Definition at line 410 of file XrdSysKernelBuffer.hh.

411  {
412  return buffer.ReadFromFD( fd, length, &offset );
413  }

◆ Send

ssize_t Send ( int  fd,
KernelBuffer buffer 
)
friend

Utility function for sending data from a kernel buffer into a socket.

See also
KernelBuffer::WriteToFD

Definition at line 442 of file XrdSysKernelBuffer.hh.

443  {
444  return buffer.WriteToFD( fd, NULL );
445  }

◆ Write

ssize_t Write ( int  fd,
KernelBuffer buffer,
int64_t  offset 
)
friend

Utility function for writing data from a kernel buffer into a file descriptor.

See also
KernelBuffer::WriteToFD

Definition at line 432 of file XrdSysKernelBuffer.hh.

433  {
434  return buffer.WriteToFD( fd, &offset );
435  }

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