⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hires.xs

📁 mgcp协议源代码。支持多种编码:g711
💻 XS
字号:
#ifdef __cplusplusextern "C" {#endif#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#ifdef WIN32#include <time.h>#else#include <sys/time.h>#endif#ifdef __cplusplus}#endif#if !defined(HAS_GETTIMEOFDAY) && defined(WIN32)#define HAS_GETTIMEOFDAY/* shows up in winsock.h?struct timeval { long tv_sec; long tv_usec;}*/intgettimeofday (struct timeval *tp, int nothing){ SYSTEMTIME st; time_t tt; struct tm tmtm; /* mktime converts local to UTC */ GetLocalTime (&st); tmtm.tm_sec = st.wSecond; tmtm.tm_min = st.wMinute; tmtm.tm_hour = st.wHour; tmtm.tm_mday = st.wDay; tmtm.tm_mon = st.wMonth - 1; tmtm.tm_year = st.wYear - 1900; tmtm.tm_isdst = -1; tt = mktime (&tmtm); tp->tv_sec = tt; tp->tv_usec = st.wMilliseconds * 1000; return 0;}#endif#if !defined(HAS_GETTIMEOFDAY) && defined(VMS)#define HAS_GETTIMEOFDAY#include <time.h> /* gettimeofday */#include <stdlib.h> /* qdiv */#include <starlet.h> /* sys$gettim */#include <descrip.h>/*        VMS binary time is expressed in 100 nano-seconds since        system base time which is 17-NOV-1858 00:00:00.00*/#define DIV_100NS_TO_SECS  10000000L#define DIV_100NS_TO_USECS 10L/*         gettimeofday is supposed to return times since the epoch        so need to determine this in terms of VMS base time*/static $DESCRIPTOR(dscepoch,"01-JAN-1970 00:00:00.00");static __int64 base_adjust=0;intgettimeofday (struct timeval *tp, void *tpz){ long ret; __int64 quad; __qdiv_t ans1,ans2;/*        In case of error, tv_usec = 0 and tv_sec = VMS condition code.        The return from function is also set to -1.        This is not exactly as per the manual page.*/ tp->tv_usec = 0; if (base_adjust==0) { /* Need to determine epoch adjustment */        ret=sys$bintim(&dscepoch,&base_adjust);        if (1 != (ret &&1)) {                tp->tv_sec = ret;                return -1;        } } ret=sys$gettim(&quad); /* Get VMS system time */ if ((1 && ret) == 1) {        quad -= base_adjust; /* convert to epoch offset */        ans1=qdiv(quad,DIV_100NS_TO_SECS);        ans2=qdiv(ans1.rem,DIV_100NS_TO_USECS);        tp->tv_sec = ans1.quot; /* Whole seconds */        tp->tv_usec = ans2.quot; /* Micro-seconds */ } else {        tp->tv_sec = ret;        return -1; } return 0;}#endif#if !defined(HAS_USLEEP) && defined(HAS_SELECT)#ifndef SELECT_IS_BROKEN#define HAS_USLEEP#define usleep hrt_usleep  /* could conflict with ncurses for static build */voidhrt_usleep(unsigned long usec){    struct timeval tv;    tv.tv_sec = 0;    tv.tv_usec = usec;    select(0, (Select_fd_set_t)NULL, (Select_fd_set_t)NULL,		(Select_fd_set_t)NULL, &tv);}#endif#endif#if !defined(HAS_USLEEP) && defined(WIN32)#define HAS_USLEEP#define usleep hrt_usleep  /* could conflict with ncurses for static build */voidhrt_usleep(unsigned long usec){    long msec;    msec = usec / 1000;    Sleep (msec);}#endif#if !defined(HAS_UALARM) && defined(HAS_SETITIMER)#define HAS_UALARM#define ualarm hrt_ualarm  /* could conflict with ncurses for static build */inthrt_ualarm(int usec, int interval){   struct itimerval itv;   itv.it_value.tv_sec = usec / 1000000;   itv.it_value.tv_usec = usec % 1000000;   itv.it_interval.tv_sec = interval / 1000000;   itv.it_interval.tv_usec = interval % 1000000;   return setitimer(ITIMER_REAL, &itv, 0);}#endif#ifdef ATLEASTFIVEOHOHFIVE#ifdef HAS_GETTIMEOFDAYstatic voidmyU2time(UV *ret){  struct timeval Tp;  int status;  status = gettimeofday (&Tp, NULL);  ret[0] = Tp.tv_sec;  ret[1] = Tp.tv_usec;}static doublemyNVtime(){  struct timeval Tp;  int status;  status = gettimeofday (&Tp, NULL);  return Tp.tv_sec + (Tp.tv_usec / 1000000.);}#endif#endifMODULE = Time::HiRes            PACKAGE = Time::HiResPROTOTYPES: ENABLEBOOT:#ifdef ATLEASTFIVEOHOHFIVE#ifdef HAS_GETTIMEOFDAY  hv_store(PL_modglobal, "Time::NVtime", 12, newSViv((IV) myNVtime), 0);  hv_store(PL_modglobal, "Time::U2time", 12, newSViv((IV) myU2time), 0);#endif#endif#ifdef HAS_USLEEPvoidusleep(useconds)        int useconds voidsleep(fseconds)        double fseconds 	CODE:	int useconds = fseconds * 1000000;	usleep (useconds);#endif#ifdef HAS_UALARMintualarm(useconds,interval=0)	int useconds	int intervalintalarm(fseconds,finterval=0)	double fseconds	double finterval	PREINIT:	int useconds, uinterval;	CODE:	useconds = fseconds * 1000000;	uinterval = finterval * 1000000;	RETVAL = ualarm (useconds, uinterval);#endif#ifdef HAS_GETTIMEOFDAYvoidgettimeofday()        PREINIT:        struct timeval Tp;        PPCODE:	int status;        status = gettimeofday (&Tp, NULL);        if (GIMME == G_ARRAY) {	     EXTEND(sp, 2);             PUSHs(sv_2mortal(newSViv(Tp.tv_sec)));             PUSHs(sv_2mortal(newSViv(Tp.tv_usec)));        } else {             EXTEND(sp, 1);             PUSHs(sv_2mortal(newSVnv(Tp.tv_sec + (Tp.tv_usec / 1000000.0))));        }doubletime()        PREINIT:        struct timeval Tp;        CODE:	int status;        status = gettimeofday (&Tp, NULL);        RETVAL = Tp.tv_sec + (Tp.tv_usec / 1000000.);	OUTPUT:	RETVAL#endif# $Id: HiRes.xs,v 1.1.1.1 1999/09/20 19:26:15 bogawa Exp $# $Log: HiRes.xs,v $# Revision 1.1.1.1  1999/09/20 19:26:15  bogawa## import the code for the Perl HiRes time code.### Revision 1.11  1999/03/16 02:27:38  wegscd# Add U2time, NVtime. Fix symbols for static link.## Revision 1.10  1998/09/30 02:36:25  wegscd# Add VMS changes.## Revision 1.9  1998/07/07 02:42:06  wegscd# Win32 usleep()## Revision 1.8  1998/07/02 01:47:26  wegscd# Add Win32 code for gettimeofday.## Revision 1.7  1997/11/13 02:08:12  wegscd# Add missing EXTEND in gettimeofday() scalar code.## Revision 1.6  1997/11/11 02:32:35  wegscd# Do something useful when calling gettimeofday() in a scalar context.# The patch is courtesy of Gisle Aas.## Revision 1.5  1997/11/06 03:10:47  wegscd# Fake ualarm() if we have setitimer.## Revision 1.4  1997/11/05 05:41:23  wegscd# Turn prototypes ON (suggested by Gisle Aas)## Revision 1.3  1997/10/13 20:56:15  wegscd# Add PROTOTYPES: DISABLE## Revision 1.2  1997/05/23 01:01:38  wegscd# Conditional compilation, depending on what the OS gives us.## Revision 1.1  1996/09/03 18:26:35  wegscd# Initial revision##

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -