Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
netcpu_osx.c
Package: netperf-2.4.4.tar.gz [view]
Upload User: kvgkvg
Upload Date: 2015-05-07
Package Size: 1129k
Code Size: 3k
Category:
Linux-Unix program
Development Platform:
C/C++
- char netcpu_sysctl_id[]="
- @(#)netcpu_osx.c Version 2.4.3";
- #if HAVE_CONFIG_H
- # include <config.h>
- #endif
- #include <stdio.h>
- #if HAVE_INTTYPES_H
- # include <inttypes.h>
- #else
- # if HAVE_STDINT_H
- # include <stdint.h>
- # endif
- #endif
- #if TIME_WITH_SYS_TIME
- # include <sys/time.h>
- # include <time.h>
- #else
- # if HAVE_SYS_TIME_H
- # include <sys/time.h>
- # else
- # include <time.h>
- # endif
- #endif
- #if HAVE_LIMITS_H
- # include <limits.h>
- # ifndef LONG_LONG_MAX
- # define LONG_LONG_MAX LLONG_MAX
- # endif /* LONG_LONG_MAX */
- #endif
- #include <errno.h>
- #include <mach/host_info.h>
- #include <mach/mach_types.h>
- /* it would seem that on 10.3.9 mach_msg_type_number_t is in
- <mach/message.h> so we'll see about including that one too.
- hopefully it still exists in 10.4. if not, we will need to add some
- .h file checks in configure so we can use "HAVE_mumble" ifdefs
- here */
- #include <mach/message.h>
- #include "netsh.h"
- #include "netlib.h"
- #define UNSIGNED_DIFFERENCE(x,y) (x >= y ? x - y : (0 - y) + x )
- static host_cpu_load_info_data_t lib_start_ticks;
- static host_cpu_load_info_data_t lib_end_ticks;
- static mach_port_t lib_host_port;
- void
- cpu_util_init(void)
- {
- lib_host_port = mach_host_self();
- return;
- }
- void
- cpu_util_terminate(void)
- {
- mach_port_deallocate(lib_host_port);
- return;
- }
- int
- get_cpu_method(void)
- {
- return OSX;
- }
- void
- get_cpu_idle(uint64_t *res)
- {
- return;
- }
- void
- get_host_ticks(host_cpu_load_info_t info)
- {
- mach_msg_type_number_t count;
- count = HOST_CPU_LOAD_INFO_COUNT;
- host_statistics(lib_host_port, HOST_CPU_LOAD_INFO, (host_info_t)info, &count);
- return;
- }
- /* calibrate_sysctl - perform the idle rate calculation using the
- sysctl call - typically on BSD */
- float
- calibrate_idle_rate(int iterations, int interval)
- {
- return (float)0.0;
- }
- float
- calc_cpu_util_internal(float elapsed_time)
- {
- float correction_factor;
- natural_t userticks, systicks, idleticks, totalticks;
- lib_local_cpu_util = (float)0.0;
- /* It is possible that the library measured a time other than */
- /* the one that the user want for the cpu utilization */
- /* calculations - for example, tests that were ended by */
- /* watchdog timers such as the udp stream test. We let these */
- /* tests tell up what the elapsed time should be. */
- if (elapsed_time != 0.0) {
- correction_factor = (float) 1.0 +
- ((lib_elapsed - elapsed_time) / elapsed_time);
- }
- else {
- correction_factor = (float) 1.0;
- }
- if (debug) {
- fprintf(where, "correction factor: %fn", correction_factor);
- }
- userticks = UNSIGNED_DIFFERENCE((lib_end_ticks.cpu_ticks[CPU_STATE_USER] + lib_end_ticks.cpu_ticks[CPU_STATE_NICE]),
- (lib_start_ticks.cpu_ticks[CPU_STATE_USER] + lib_start_ticks.cpu_ticks[CPU_STATE_NICE]));
- systicks = UNSIGNED_DIFFERENCE(lib_end_ticks.cpu_ticks[CPU_STATE_SYSTEM], lib_start_ticks.cpu_ticks[CPU_STATE_SYSTEM]);
- idleticks = UNSIGNED_DIFFERENCE(lib_end_ticks.cpu_ticks[CPU_STATE_IDLE], lib_start_ticks.cpu_ticks[CPU_STATE_IDLE]);
- totalticks = userticks + systicks + idleticks;
- lib_local_cpu_util = ((float)userticks + (float)systicks)/(float)totalticks * 100.0f;
- lib_local_cpu_util *= correction_factor;
- return lib_local_cpu_util;
- }
- void
- cpu_start_internal(void)
- {
- get_host_ticks(&lib_start_ticks);
- }
- void
- cpu_stop_internal(void)
- {
- get_host_ticks(&lib_end_ticks);
- }