Apache-Mmap

 view release on metacpan or  search on metacpan

Mmap.xs  view on Meta::CPAN

   ret->prot = prot;
   ret->flags = flags;

   ret->addr = mmap(0, len, prot, flags, fd, off);
   if (ret->addr == MAP_FAILED) {
     XSRETURN_UNDEF;
   }

   RETVAL = ret;

 OUTPUT:
 RETVAL

SV *
STORE( self, what ) 
  Mmap *self
  SV *what

  PROTOTYPE: $$

  CODE:

Mmap.xs  view on Meta::CPAN

    memcpy( self->addr, SvPV( what, self->cur ), self->cur );
    memset( self->addr + self->cur, 0, self->len - self->cur );
  } else {
    memcpy( self->addr, SvPV( what, na ), self->len );
    self->cur = self->len;
  }
  
  /* return copy of what we stored */
  RETVAL = newSVpv( self->addr, self->cur );

  OUTPUT:
  RETVAL

SV *
FETCH( self ) 
  Mmap	*self

  PROTOTYPE: $
  CODE:
  /* Make sure region was mapped with read privledges */
  if( !( self->prot & PROT_READ ) ) {
    croak( "Apache::Mmap::FETCH: Attempt to read from write only region" );
    XSRETURN_UNDEF;
  }

  /* Return a PV with the contents of the mapped region */
  RETVAL = newSVpv( self->addr, self->cur );

  OUTPUT:
  RETVAL

void
DESTROY( self )
  Mmap *self

  PROTOTYPE: $
  CODE:
  if( self == NULL || self->addr == NULL ) {
    warn( "Apache::Mmap::DESTROY: Attempt to destroy null ptr or region\n" );

typemap  view on Meta::CPAN

##
## $Id: typemap,v 1.1 1997/09/09 03:30:02 fletch Exp $
##
TYPEMAP
Mmap*	O_OBJECT
size_t	T_IV
off_t	T_IV

OUTPUT

O_OBJECT
    $arg = newSV( 0 );
    sv_setref_iv( $arg, CLASS, (IV)$var );

INPUT

O_OBJECT
  if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
    $var = ($type)SvIV((SV*)SvRV( $arg ));
  else{
    warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
    XSRETURN_UNDEF;
  }



( run in 0.321 second using v1.01-cache-2.11-cpan-4e96b696675 )