int write_buf(const char *fusepath, fuse_bufvec *src, off_t offset, fuse_file_info *ffi) { int rv; FileInfo *fi = reinterpret_cast<FileInfo*>(ffi->fh); rv = _write_buf(fi->fd,*src,offset); if(rv == -ENOSPC) { const fuse_context *fc = fuse_get_context(); const Config &config = Config::get(fc); if(config.moveonenospc) { size_t extra; const ugid::Set ugid(0,0); const rwlock::ReadGuard readlock(&config.srcmountslock); extra = fuse_buf_size(src); rv = fs::movefile(config.srcmounts,fusepath,extra,fi->fd); if(rv == -1) return -ENOSPC; rv = _write_buf(fi->fd,*src,offset); } } return rv; }
int write_buf(const char *fusepath, fuse_bufvec *src, off_t offset, fuse_file_info *ffi) { return _write_buf(ffi->fh, *src, offset); }
void write_no_delay( const vecval& v ) { s_vpi_value val; if( T::width()!=v.width() ) throw invalid_argument((format("diffrent vecval width. %s is %d bits") % T::fullname() % T::width()).str()); val.format = vpiVectorVal; val.value.vector = _write_buf();; for(unsigned int i=0; i<VectorValue::num_of_vecvals(T::width()); i++) { val.value.vector[i] = v.get_raw_vecval(i); } _put_no_delay( val ); }