Exemple #1
0
ssize_t os_write(int fd, void *buf, size_t nbyte, bool sync_flag) {
    int res = write(fd, buf, nbyte);
    if (res == -1)
        perror("write()");

    if (sync_flag)
        os_fsync(fd);

    return res;
}
Exemple #2
0
w_rc_t    sdisk_unix_t::sync()
{
    if (_fd == FD_NONE)
        return RC(stBADFD);

    int n = os_fsync(_fd);

    /* fsync's to r/o files and devices can fail ok */
    if (n == -1 && (errno == EBADF || errno == EINVAL))
        n = 0;

    CHECK_ERRNO(n);

    return RCOK;
}
Exemple #3
0
/*
 * fsync
 */
CAMLprim value ml_fsync(value v_fd)
{
    CAMLparam1(v_fd);
    int r = 0;
    OS_FD fd;

    if (OS_IS_FD(v_fd)) 
      fd = Fd_val(v_fd); 
    else 
      caml_invalid_argument("fsync");

    caml_enter_blocking_section();
    r = os_fsync(fd);
    caml_leave_blocking_section();
    if (0 != r)
      uerror("fsync",Nothing);
    CAMLreturn(Val_unit);
}
Exemple #4
0
static void
d_doPrint(
    d_configuration config,
    const char* format,
    va_list args)
{
    char description[512];

    if(config->tracingOutputFile){
        os_vsnprintf(description, sizeof(description)-1, format, args);
        description [sizeof(description)-1] = '\0';
        fprintf(config->tracingOutputFile, "%s", description);
        fflush(config->tracingOutputFile);

        if(config->tracingSynchronous){
            os_fsync(config->tracingOutputFile);
        }
    }
}