RTTimerCreate-generic.cpp revision 5c73d69670892b2d7d6a369da2629fd15512011a
5c73d69670892b2d7d6a369da2629fd15512011avboxsync/** $Id$ */
5c73d69670892b2d7d6a369da2629fd15512011avboxsync/** @file
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * InnoTek Portable Runtime - Timers, Generic RTTimerCreate() Implementation.
5c73d69670892b2d7d6a369da2629fd15512011avboxsync */
5c73d69670892b2d7d6a369da2629fd15512011avboxsync
5c73d69670892b2d7d6a369da2629fd15512011avboxsync/*
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * Copyright (C) 2006 InnoTek Systemberatung GmbH
5c73d69670892b2d7d6a369da2629fd15512011avboxsync *
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * available from http://www.virtualbox.org. This file is free software;
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * you can redistribute it and/or modify it under the terms of the GNU
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * General Public License as published by the Free Software Foundation,
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
5c73d69670892b2d7d6a369da2629fd15512011avboxsync *
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * If you received this file as part of a commercial VirtualBox
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * distribution, then only the terms of your commercial VirtualBox
5c73d69670892b2d7d6a369da2629fd15512011avboxsync * license agreement apply instead of the previous paragraph.
5c73d69670892b2d7d6a369da2629fd15512011avboxsync */
5c73d69670892b2d7d6a369da2629fd15512011avboxsync
5c73d69670892b2d7d6a369da2629fd15512011avboxsync
5c73d69670892b2d7d6a369da2629fd15512011avboxsync/*******************************************************************************
5c73d69670892b2d7d6a369da2629fd15512011avboxsync* Header Files *
5c73d69670892b2d7d6a369da2629fd15512011avboxsync*******************************************************************************/
5c73d69670892b2d7d6a369da2629fd15512011avboxsync#include <iprt/timer.h>
5c73d69670892b2d7d6a369da2629fd15512011avboxsync#include <iprt/err.h>
5c73d69670892b2d7d6a369da2629fd15512011avboxsync#include <iprt/assert.h>
5c73d69670892b2d7d6a369da2629fd15512011avboxsync
5c73d69670892b2d7d6a369da2629fd15512011avboxsync
5c73d69670892b2d7d6a369da2629fd15512011avboxsyncRTDECL(int) RTTimerCreate(PRTTIMER *ppTimer, unsigned uMilliesInterval, PFNRTTIMER pfnTimer, void *pvUser)
5c73d69670892b2d7d6a369da2629fd15512011avboxsync{
5c73d69670892b2d7d6a369da2629fd15512011avboxsync int rc = RTTimerCreateEx(ppTimer, uMilliesInterval * UINT64_C(1000000), 0, pfnTimer, pvUser);
5c73d69670892b2d7d6a369da2629fd15512011avboxsync if (RT_SUCCESS(rc))
5c73d69670892b2d7d6a369da2629fd15512011avboxsync {
5c73d69670892b2d7d6a369da2629fd15512011avboxsync rc = RTTimerStart(*ppTimer, 0);
5c73d69670892b2d7d6a369da2629fd15512011avboxsync if (RT_SUCCESS(rc))
5c73d69670892b2d7d6a369da2629fd15512011avboxsync return rc;
5c73d69670892b2d7d6a369da2629fd15512011avboxsync int rc2 = RTTimerDestroy(*ppTimer); AssertRC(rc2);
5c73d69670892b2d7d6a369da2629fd15512011avboxsync *ppTimer = NULL;
5c73d69670892b2d7d6a369da2629fd15512011avboxsync }
5c73d69670892b2d7d6a369da2629fd15512011avboxsync return rc;
5c73d69670892b2d7d6a369da2629fd15512011avboxsync}
5c73d69670892b2d7d6a369da2629fd15512011avboxsync