-static inline int timer_settime(timer_t timerid, int flags,
- const struct itimerspec *value, struct itimerspec *ovalue)
-{
- struct sigaction sa;
- struct itimerval tv;
- struct itimerval tv_out;
- int rc;
-
- tv.it_interval.tv_sec = value->it_interval.tv_sec;
- tv.it_interval.tv_usec = value->it_interval.tv_nsec / 1000;
-
- tv.it_value.tv_sec = value->it_value.tv_sec;
- tv.it_value.tv_usec = value->it_value.tv_nsec / 1000;
-
- sa.sa_handler = sig_alrm;
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = 0;
-
- rc = sigaction(SIGALRM, &sa, NULL);
-
- if (!rc)
- rc = setitimer(ITIMER_REAL, &tv, &tv_out);
-
- if (!rc && ovalue != NULL) {
- ovalue->it_interval.tv_sec = tv_out.it_interval.tv_sec;
- ovalue->it_interval.tv_nsec = tv_out.it_interval.tv_usec * 1000;
- ovalue->it_value.tv_sec = tv_out.it_value.tv_sec;
- ovalue->it_value.tv_nsec = tv_out.it_value.tv_usec * 1000;
- }
+ if (ioctl(f->fd, DKIOCGETBLOCKCOUNT, &block_count) == -1)
+ return errno;
+ if (ioctl(f->fd, DKIOCGETBLOCKSIZE, &block_size) == -1)
+ return errno;