From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:58456) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SFlJF-0004oP-34 for qemu-devel@nongnu.org; Thu, 05 Apr 2012 07:57:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SFlJ5-0005Eh-ND for qemu-devel@nongnu.org; Thu, 05 Apr 2012 07:57:00 -0400 Received: from goliath.siemens.de ([192.35.17.28]:19382) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SFlJ5-0005Dr-Cw for qemu-devel@nongnu.org; Thu, 05 Apr 2012 07:56:51 -0400 Message-ID: <4F7D887B.1030104@siemens.com> Date: Thu, 05 Apr 2012 13:56:43 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <6e10c02cbb87fe30703de848455593df41ec7f4b.1333623555.git.jan.kiszka@siemens.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 01/10] Introduce qemu_cond_timedwait for POSIX List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Kevin Wolf , Paolo Bonzini , Anthony Liguori , "qemu-devel@nongnu.org" On 2012-04-05 13:19, Peter Maydell wrote: > On 5 April 2012 11:59, Jan Kiszka wrote: >> +/* Returns true if condition was signals, false if timed out. */ >> +bool qemu_cond_timedwait(QemuCond *cond, QemuMutex *mutex, >> + unsigned int timeout_ms) >> +{ >> + struct timespec ts; >> + struct timeval tv; >> + int err; >> + >> + gettimeofday(&tv, NULL); >> + ts.tv_sec = tv.tv_sec + timeout_ms / 1000; >> + ts.tv_nsec = tv.tv_usec * 1000 + timeout_ms % 1000; >> + if (ts.tv_nsec > 1000000000) { >> + ts.tv_sec++; >> + ts.tv_nsec -= 1000000000; >> + } >> + err = pthread_cond_timedwait(&cond->cond, &mutex->lock, &ts); > > Use clock_gettime() and avoid the need to convert a struct timeval > to a struct timespec ? Would save that "* 1000". I just wondered why we do not use it elsewhere in QEMU and was reluctant to risk some BSD breakage. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux