diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c index 354442c2b812..b5577577eb51 100644 --- a/sys/kern/sys_pipe.c +++ b/sys/kern/sys_pipe.c @@ -1,4 +1,4 @@ -/* $NetBSD: sys_pipe.c,v 1.109 2009/04/04 10:12:51 ad Exp $ */ +/* $NetBSD: sys_pipe.c,v 1.110 2009/04/11 14:42:28 christos Exp $ */ /*- * Copyright (c) 2003, 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sys_pipe.c,v 1.109 2009/04/04 10:12:51 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sys_pipe.c,v 1.110 2009/04/11 14:42:28 christos Exp $"); #include #include @@ -349,7 +349,7 @@ pipe_create(struct pipe **pipep, pool_cache_t cache, kmutex_t *mutex) KASSERT(pipe != NULL); *pipep = pipe; error = 0; - getmicrotime(&pipe->pipe_ctime); + getnanotime(&pipe->pipe_ctime); pipe->pipe_atime = pipe->pipe_ctime; pipe->pipe_mtime = pipe->pipe_ctime; pipe->pipe_lock = mutex; @@ -585,7 +585,7 @@ again: } if (error == 0) - getmicrotime(&rpipe->pipe_atime); + getnanoime(&rpipe->pipe_atime); pipeunlock(rpipe); unlocked_error: @@ -1032,7 +1032,7 @@ pipe_write(struct file *fp, off_t *offset, struct uio *uio, kauth_cred_t cred, error = 0; if (error == 0) - getmicrotime(&wpipe->pipe_mtime); + getnanotime(&wpipe->pipe_mtime); /* * We have something to offer, wake up select/poll. @@ -1186,16 +1186,16 @@ pipe_stat(struct file *fp, struct stat *ub) { struct pipe *pipe = fp->f_data; - memset((void *)ub, 0, sizeof(*ub)); + memset(ub, 0, sizeof(*ub)); ub->st_mode = S_IFIFO | S_IRUSR | S_IWUSR; ub->st_blksize = pipe->pipe_buffer.size; if (ub->st_blksize == 0 && pipe->pipe_peer) ub->st_blksize = pipe->pipe_peer->pipe_buffer.size; ub->st_size = pipe->pipe_buffer.cnt; ub->st_blocks = (ub->st_size) ? 1 : 0; - TIMEVAL_TO_TIMESPEC(&pipe->pipe_atime, &ub->st_atimespec); - TIMEVAL_TO_TIMESPEC(&pipe->pipe_mtime, &ub->st_mtimespec); - TIMEVAL_TO_TIMESPEC(&pipe->pipe_ctime, &ub->st_ctimespec); + ub->st_atimespec = pipe->pipe_atime; + ub->st_mtimespec = pipe->pipe_mtime; + ub->st_ctimespec = ub->st_birthtimespec = pipe->pipe_ctime; ub->st_uid = kauth_cred_geteuid(fp->f_cred); ub->st_gid = kauth_cred_getegid(fp->f_cred); diff --git a/sys/sys/pipe.h b/sys/sys/pipe.h index fa56c4bf60b8..7bd468533a61 100644 --- a/sys/sys/pipe.h +++ b/sys/sys/pipe.h @@ -1,4 +1,4 @@ -/* $NetBSD: pipe.h,v 1.25 2009/02/01 18:23:04 ad Exp $ */ +/* $NetBSD: pipe.h,v 1.26 2009/04/11 14:42:28 christos Exp $ */ /* * Copyright (c) 1996 John S. Dyson @@ -109,9 +109,9 @@ struct pipe { struct pipebuf pipe_buffer; /* data storage */ struct pipemapping pipe_map; /* pipe mapping for direct I/O */ struct selinfo pipe_sel; /* for compat with select */ - struct timeval pipe_atime; /* time of last access */ - struct timeval pipe_mtime; /* time of last modify */ - struct timeval pipe_ctime; /* time of status change */ + struct timespec pipe_atime; /* time of last access */ + struct timespec pipe_mtime; /* time of last modify */ + struct timespec pipe_ctime; /* time of status change */ pid_t pipe_pgid; /* process group for sigio */ struct pipe *pipe_peer; /* link with other direction */ u_int pipe_state; /* pipe status info */