/*
* Copyright (c) 2007, XenSource Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions 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 XenSource Inc. nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define DEFAULT_LEASE_TIME_SECS 30
int lock(char *fn_to_lock, char *uuid, int force, int readonly, int *lease_time, int *retstat);
int unlock(char *fn_to_unlock, char *uuid, int readonly, int *retstat);
int lock_delta(char *fn_to_check, int *cur_lease_time, int *max_lease_time);
typedef enum {
LOCK_OK = 0,
LOCK_EBADPARM = -1,
LOCK_ENOMEM = -2,
LOCK_ESTAT = -3,
LOCK_EHELD_WR = -4,
LOCK_EHELD_RD = -5,
LOCK_EOPEN = -6,
LOCK_EXLOCK_OPEN = -7,
LOCK_EXLOCK_WRITE= -8,
LOCK_EINODE = -9,
LOCK_EUPDATE = -10,
LOCK_EREAD = -11,
LOCK_EREMOVE = -12,
LOCK_ENOLOCK = -13,
LOCK_EUSAGE = -14,
} lock_error;
ption>
#!/usr/bin/env python3importargparseimportfileinputimportsysparser=argparse.ArgumentParser(description='Convert vcd2txt output to tikz-timing line.')parser.add_argument('filename',metavar='FILE',help='input txt file')parser.add_argument('signame',metavar='SIG',help='Signal name')parser.add_argument('-s',metavar='scale',default=1.0,type=float,help='Scale all time spans with this factor')parser.add_argument('-l',action='store_true',help='Logic signal (high/low)')parser.add_argument('-b',action='store_true',help='Display binary value')parser.add_argument('-x',action='store_true',help='Display hex value')parser.add_argument('-d',action='store_true',help='Display decimal value')args=parser.parse_args()start_time=Nonestop_time=Nonetime_val={}defvalue_to_logic(value):found_x=Falseforcharinvalue:ifchar=='1':return"H"ifchar=='x':found_x=Truereturn"U"iffound_xelse"L"defvalue_to_binary(value):return"D{%s}"%valuedefvalue_to_hex(value):hex_string=""found_def=Falsewhilelen(value)%4!=0:value="0"+valuewhilelen(value)!=0:bin_digits=value[0:4]hex_digit=0value=value[4:]forbinbin_digits:ifb=='0':hex_digit=hex_digit*2elifb=='1':hex_digit=hex_digit*2+1else:hex_digit+=100ifhex_digit>15:hex_string+="x"else:found_def=Truehex_string+="0123456789abcdef"[hex_digit]ifnotfound_def:return"U";return"D{%s}"%hex_stringdefvalue_to_decimal(value):val=0found_def=Falsefound_undef=Falsefordigitinvalue:ifdigit=='x':found_undef=Trueelse:val=val*2+int(digit)found_def=Trueiffound_def:iffound_undef:return"D{X}"else:return"D{%d}"%valreturn"U"forlineinfileinput.input(args.filename):(node,time,name,value)=line.strip().split('\t')time=int(time)ifstart_timeisNoneorstart_time>time:start_time=timeifstop_timeisNoneorstop_time<time:stop_time=timeifname==args.signame:ifargs.l:time_val[+time]=value_to_logic(value)elifargs.b:time_val[+time]=value_to_binary(value)elifargs.x:time_val[+time]=value_to_hex(value)elifargs.d:time_val[+time]=value_to_decimal(value)else:time_val[+time]=valueifstart_timenotintime_val:time_val[start_time]="S"last_time=Nonelast_value=Nonefortinsorted(time_val.keys()):iflast_timeisnotNone:print("%f%s"%((t-last_time)*args.s,last_value),end='')(last_time,last_value)=(t,time_val[t])iflast_time<stop_time:print("%f%s"%((stop_time-last_time)*args.s,last_value),end='')print('')