Thank you for your advice Of course there are disadvantages to using a dynamic library, there are also advantages Maybe, I think that clock_gettime() function is unlikely going to be a lot of calls about impair performance 2015. 4. 23. 오후 11:34에 "Stéphane Graber" <[email protected]>님이 작성:
> On Thu, Apr 23, 2015 at 05:19:54PM +0900, Gyeongmin Kim wrote: > > Dear, All > > > > In project, use both gettimeofday() and clock_gettime(). It's needless. > > I think to use clock_gettime() better than gettimeofday(). becaues, > > gettimeofday() function will be obsoletecent. ( > > http://pubs.opengroup.org/stage7tc1/functions/gettimeofday.html) > > and "time.h" is used only (Now, using "sys/time.h", "time.h") > > > > also, clock_gettime() use to timespec structrue. > > If function use to timeval structure, timespec structure also support to > > function. But, different slightly name of function. such as, select() and > > pselect () > > > > int select(int nfds, fd_set *readfds, fd_set *writefds, > > fd_set *exceptfds, struct timeval *timeout); > > > > int pselect(int nfds, fd_set *readfds, fd_set *writefds, > > fd_set *exceptfds, const struct timespec *timeout, > > const sigset_t *sigmask > > One reason to prefer gettimeofday to clock_gettime is that on quite a > few architecture it's implemented using a VDSO which avoids the need for > a kernel roundtrip. However unless we call it very frequently in some > kind of loop, that's unlikely to be a significant performance loss. > > > > > Signed-off-by: GyeongminKim <[email protected]> > > > > # On branch master > > # Changes to be committed: > > # (use "git reset HEAD <file>..." to unstage) > > # > > # modified: src/lxc/conf.c > > # modified: src/lxc/confile.c > > # modified: src/lxc/log.c > > # modified: src/lxc/log.h > > # modified: src/lxc/lxc_stop.c > > # modified: src/lxc/lxclock.h > > # modified: src/lxc/monitor.c > > # modified: src/lxc/state.c > > # > > > > diff --git a/src/lxc/conf.c b/src/lxc/conf.c > > index d4855fd..d47907d 100644 > > --- a/src/lxc/conf.c > > +++ b/src/lxc/conf.c > > @@ -35,7 +35,6 @@ > > #include <sys/types.h> > > #include <pwd.h> > > #include <grp.h> > > -#include <time.h> > > #ifdef HAVE_STATVFS > > #include <sys/statvfs.h> > > #endif > > diff --git a/src/lxc/confile.c b/src/lxc/confile.c > > index e3be6a6..dc12edf 100644 > > --- a/src/lxc/confile.c > > +++ b/src/lxc/confile.c > > @@ -36,7 +36,6 @@ > > #include <arpa/inet.h> > > #include <netinet/in.h> > > #include <net/if.h> > > -#include <time.h> > > #include <dirent.h> > > > > #include "parse.h" > > diff --git a/src/lxc/log.c b/src/lxc/log.c > > index 6633e62..0230724 100644 > > --- a/src/lxc/log.c > > +++ b/src/lxc/log.c > > @@ -89,7 +89,7 @@ static int log_append_logfile(const struct > > lxc_log_appender *appender, > > if (lxc_log_fd == -1) > > return 0; > > > > - ms = event->timestamp.tv_usec / 1000; > > + ms = event->timestamp.tv_nsec / 1000000; > > n = snprintf(buffer, sizeof(buffer), > > "%15s %10ld.%03d %-8s %s - %s:%s:%d - ", > > log_prefix, > > diff --git a/src/lxc/log.h b/src/lxc/log.h > > index b47f120..bccdf5f 100644 > > --- a/src/lxc/log.h > > +++ b/src/lxc/log.h > > @@ -28,7 +28,7 @@ > > > > #include <stdarg.h> > > #include <stdio.h> > > -#include <sys/time.h> > > +#include <time.h> > > #include <string.h> > > #include <strings.h> > > #include <stdbool.h> > > @@ -79,7 +79,7 @@ struct lxc_log_locinfo { > > struct lxc_log_event { > > const char* category; > > int priority; > > - struct timeval timestamp; > > + struct timespec timestamp; > > struct lxc_log_locinfo *locinfo; > > const char *fmt; > > va_list *vap; > > @@ -203,7 +203,7 @@ ATTR_UNUSED static inline void LXC_##PRIORITY(struct > > lxc_log_locinfo* locinfo, \ > > }; \ > > va_list va_ref; \ > > \ > > - gettimeofday(&evt.timestamp, NULL); \ > > + clock_gettime(CLOCK_REALTIME, &evt.timestamp); \ > > \ > > va_start(va_ref, format); \ > > evt.vap = &va_ref; \ > > diff --git a/src/lxc/lxc_stop.c b/src/lxc/lxc_stop.c > > index 7054532..3b891a6 100644 > > --- a/src/lxc/lxc_stop.c > > +++ b/src/lxc/lxc_stop.c > > @@ -104,14 +104,14 @@ static int do_reboot_and_check(struct lxc_arguments > > *a, struct lxc_container *c) > > /* can we use c-> wait for this, assuming it will > > * re-enter RUNNING? For now just sleep */ > > int elapsed_time, curtime = 0; > > - struct timeval tv; > > + struct timespec tv; > > > > newpid = c->init_pid(c); > > if (newpid != -1 && newpid != pid) > > return 0; > > > > if (timeout != -1) { > > - ret = gettimeofday(&tv, NULL); > > + ret = clock_gettime(CLOCK_REALTIME, &tv); > > if (ret) > > break; > > curtime = tv.tv_sec; > > @@ -119,7 +119,7 @@ static int do_reboot_and_check(struct lxc_arguments > *a, > > struct lxc_container *c) > > > > sleep(1); > > if (timeout != -1) { > > - ret = gettimeofday(&tv, NULL); > > + ret = clock_gettime(CLOCK_REALTIME, &tv); > > if (ret) > > break; > > elapsed_time = tv.tv_sec - curtime; > > diff --git a/src/lxc/lxclock.h b/src/lxc/lxclock.h > > index e00dd8a..74ea83f 100644 > > --- a/src/lxc/lxclock.h > > +++ b/src/lxc/lxclock.h > > @@ -28,7 +28,6 @@ > > #include <sys/file.h> > > #include <semaphore.h> > > #include <string.h> > > -#include <time.h> > > > > #define LXC_LOCK_ANON_SEM 1 /*!< Anonymous semaphore lock */ > > #define LXC_LOCK_FLOCK 2 /*!< flock(2) lock */ > > diff --git a/src/lxc/monitor.c b/src/lxc/monitor.c > > index 1e1c094..9f68af8 100644 > > --- a/src/lxc/monitor.c > > +++ b/src/lxc/monitor.c > > @@ -222,16 +222,16 @@ err1: > > int lxc_monitor_read_fdset(fd_set *rfds, int nfds, struct lxc_msg *msg, > > int timeout) > > { > > - struct timeval tval,*tv = NULL; > > + struct timespec tspec,*tv = NULL; > > int ret,i; > > > > if (timeout != -1) { > > - tv = &tval; > > + tv = &tspec; > > tv->tv_sec = timeout; > > - tv->tv_usec = 0; > > + tv->tv_nsec = 0; > > } > > > > - ret = select(nfds, rfds, NULL, NULL, tv); > > + ret = pselect(nfds, rfds, NULL, NULL, tv, NULL); > > if (ret == -1) > > return -1; > > else if (ret == 0) > > diff --git a/src/lxc/state.c b/src/lxc/state.c > > index db833b0..a5e9d6f 100644 > > --- a/src/lxc/state.c > > +++ b/src/lxc/state.c > > @@ -134,12 +134,12 @@ extern int lxc_wait(const char *lxcname, const char > > *states, int timeout, const > > > > for (;;) { > > int elapsed_time, curtime = 0; > > - struct timeval tv; > > + struct timespec tv; > > int stop = 0; > > int retval; > > > > if (timeout != -1) { > > - retval = gettimeofday(&tv, NULL); > > + retval = clock_gettime(CLOCK_REALTIME, &tv); > > if (retval) > > goto out_close; > > curtime = tv.tv_sec; > > @@ -151,7 +151,7 @@ extern int lxc_wait(const char *lxcname, const char > > *states, int timeout, const > > } > > > > if (timeout != -1) { > > - retval = gettimeofday(&tv, NULL); > > + retval = clock_gettime(CLOCK_REALTIME, &tv); > > if (retval) > > goto out_close; > > elapsed_time = tv.tv_sec - curtime; > > > _______________________________________________ > > lxc-devel mailing list > > [email protected] > > http://lists.linuxcontainers.org/listinfo/lxc-devel > > > -- > Stéphane Graber > Ubuntu developer > http://www.ubuntu.com > > _______________________________________________ > lxc-devel mailing list > [email protected] > http://lists.linuxcontainers.org/listinfo/lxc-devel > >
_______________________________________________ lxc-devel mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-devel
