* ========== Copyright Header Begin ==========================================
* Hypervisor Software File: support.c
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
* - Do no alter or remove copyright notices
* - Redistribution and use of this software in source and binary forms, with
* or without modification, are permitted provided that the following
* - Redistribution of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of Sun Microsystems, Inc. or the names of contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* This software is provided "AS IS," without a warranty of any kind.
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
* MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
* OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
* FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* You acknowledge that this software is not designed, licensed or
* intended for use in the design, construction, operation or maintenance of
* ========== Copyright Header End ============================================
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
#pragma ident "@(#)support.c 1.5 07/07/09 SMI"
* Basic printf capability for debugging output.
c_printf(char *strp
, ...)
#define PUTC(_x) do { buf[0] = (_x); c_puts(buf); } while (0)
for (i
= 0; (ch
= strp
[i
]) != '\0'; i
++) {
c_putn(va_arg(argsp
, uint64_t), 16);
c_putn(va_arg(argsp
, uint64_t), 10);
c_puts(va_arg(argsp
, char *));
* HV console output a number in the specified base
c_putn(uint64_t val
, int base
)
static char ch
[] = "0123456789abcdef";
if (base
== 10 && ((int64_t)val
) < 0LL) {
while ((val
/ num
) >= base
) {
* ... do properly if we ever need to bzero large chunks of memory
c_bzero(void *ptr
, uint64_t size
)
for (i
= 0; i
< size
; i
++) p
[i
] = 0;
* ... do properly if we ever need to copy large chunks of memory
c_memcpy(void *dest
, void *src
, uint64_t size
)
for (i
= 0; i
< size
; i
++)
* Make sure the MD has been parsed/read in before using
if (config
.stickfrequency
== 0) {
delay
= (usecs
* config
.stickfrequency
) / 1000000ll;
for (old
= c_get_stick(); (c_get_stick() - old
) < delay
; )