Example #1
0
int kr_io2_output(kr_io2_t *io) {

  ssize_t ret;

  if (!kr_io2_want_out(io)) {
    return 0;
  }
  ret = kr_io2_write(io);

  //printk("kr_io2_output wrote: %zu old len: %zu new len: %zu",
  //       ret, io->len, io->len - ret);


  if (ret != io->len) {
	  if (ret < 1) {
      	printke("its bad we should certainly fail, ret %zu len %zu",
         ret, io->len);
      	return ret;
	  } else {
	    io->len -= ret;
	    io->wr_buf += ret;		
	  }
	  return 0;
  }
  kr_io2_restart(io);
  return 0;
}
Example #2
0
int kr_io2_sync(kr_io2_t *io) {
  // FILES ONLY blocking or failing!
  ssize_t ret;
  
  if (!kr_io2_want_out(io)) {
    return 0;
  }
  ret = kr_io2_write (io);
  if (ret != io->len) {
    printk ("Could not write all we wanted to: %zd of %zu",
            ret, io->len);
    printke ("Failing here a, this should not happen as a file only func");
    exit (77);
  }
  kr_io2_restart (io);
  return 0;
}
Example #3
0
int kr_io2_flush (kr_io2_t *io) {

    int ret;
    int len;

    if (!kr_io2_want_out (io)) {
        return 0;
    }

    len = io->len;

    ret = kr_io2_write (io);
    if (ret != len) {

        printk ("Could not write all we wanted to: %d of %d",
                ret, len);
        printke ("Failing here a temporary test");
        exit (77);
    }

    kr_io2_restart (io);

    return 0;
}