Browse Source
Missing files from last commit.
Missing files from last commit.
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@1736 bbc10eb1-c90d-0410-af57-cb519fbb1720master
3 changed files with 322 additions and 0 deletions
-
31cudd/LICENSE
-
154cudd/MODIFICATIONS
-
137cudd/util/restart.c
@ -0,0 +1,31 @@ |
|||||
|
Copyright (c) 1995-2004, Regents of the University of Colorado |
||||
|
|
||||
|
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 the University of Colorado 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. |
||||
@ -0,0 +1,154 @@ |
|||||
|
This file describes the modifications that have been made to this version of CUDD. |
||||
|
It is based on CUDD 2.4.2. Below is a list of the files that have been changed. |
||||
|
|
||||
|
* Makefile |
||||
|
* setup.sh . |
||||
|
* shutdown.sh . |
||||
|
* cudd/cuddAddAbs.c |
||||
|
* cudd/cuddAddApply.c |
||||
|
* cudd/cuddAddNeg.c |
||||
|
* cudd/cuddExport.c |
||||
|
* cudd/cuddSat.c |
||||
|
* cudd/cuddTable.c |
||||
|
* cudd/cudd.h |
||||
|
* cudd/cuddInt.h |
||||
|
* util/Makefile |
||||
|
* util/cpu_time.c |
||||
|
* util/pipefork.c |
||||
|
|
||||
|
The following structural changes have also been made: |
||||
|
|
||||
|
* ddmp/nanotrav/mnemosyne/obj/sis and various doc directories have been removed |
||||
|
* lib directory added with symlinks to lib files |
||||
|
|
||||
|
|
||||
|
Details |
||||
|
------- |
||||
|
|
||||
|
[Makefile] |
||||
|
|
||||
|
* Disabled building of nanotrav/mnemosyne packages (don't need) |
||||
|
|
||||
|
* Default options are for Linux (original makefile is in Makefile.orig) |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[setup.sh] |
||||
|
|
||||
|
* Don't create links for includes we don't use |
||||
|
* Create links for libs too |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[shutdown.sh] |
||||
|
|
||||
|
* Delete lib directory too |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[cudd/cuddAddAbs.c] |
||||
|
|
||||
|
* Added 2 more abstraction functions to do min/max, ie: |
||||
|
Cudd_addMinAbstract() |
||||
|
Cudd_addMaxAbstract() |
||||
|
cuddAddMinAbstractRecur() |
||||
|
cuddAddMaxAbstractRecur() |
||||
|
|
||||
|
* Added another abstraction functions to do "first", ie: |
||||
|
Cudd_addFirstAbstract() |
||||
|
cuddAddFirstAbstractRecur() |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[cudd/cuddAddApply.c] |
||||
|
|
||||
|
* Added the following functions to be used with Cudd_addApply() |
||||
|
Cudd_addEquals() - f op g = 1 if f==g else 0 |
||||
|
Cudd_addNotEquals() - f op g = 1 if f!=g else 0 |
||||
|
Cudd_addGreaterThan() - f op g = 1 if f>g else 0 |
||||
|
Cudd_addGreaterThanEquals() - f op g = 1 if f>=g else 0 |
||||
|
Cudd_addLessThan() - f op g = 1 if f<g else 0 |
||||
|
Cudd_addLessThanEquals() - f op g = 1 if f<=g else 0 |
||||
|
Cudd_addPow() - power |
||||
|
Cudd_addMod() - modulo |
||||
|
Cudd_addLogXY() - log x base y |
||||
|
|
||||
|
* Added the following functions to be used with Cudd_addMonadicApply() |
||||
|
Cudd_addFloor() - floor |
||||
|
Cudd_addCeil() - ceiling |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[cudd/cuddAddNeg.c] |
||||
|
|
||||
|
* Changed Cudd_addRoundOff (actually cuddAddRoundOffRecur) so that it rounds |
||||
|
properly to N decimal places rather than always rounding up. |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[cudd/cuddExport.c] |
||||
|
|
||||
|
* Changed Cudd_DumpDot: |
||||
|
- dashed lines for else arcs changed to dotted (more readable on big graphs) |
||||
|
- the constant node 0 and all arcs to it are not printed |
||||
|
- labels on nodes omitted |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[cudd/cuddSat.c] |
||||
|
|
||||
|
* Added the function Cudd_EqualSupNormRel() |
||||
|
It's very similar to Cudd_EqualSupNorm() but checks for relative difference |
||||
|
i.e. (f-g/f) < e instead of (f-g) < e |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[cudd/cuddTable.c] |
||||
|
|
||||
|
* Changed cuddUniqueConst so that constants differing by very small amounts |
||||
|
end up in the same hash table |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[cudd/{cudd.h,cuddInt.h}] |
||||
|
|
||||
|
* Added prototypes for: |
||||
|
Cudd_addMinAbstract() |
||||
|
Cudd_addMaxAbstract() |
||||
|
Cudd_addFirstAbstract() |
||||
|
Cudd_addEquals() |
||||
|
Cudd_addNotEquals() |
||||
|
Cudd_addGreaterThan() |
||||
|
Cudd_addGreaterThanEquals() |
||||
|
Cudd_addLessThan() |
||||
|
Cudd_addLessThanEquals() |
||||
|
Cudd_addPow() |
||||
|
Cudd_addMod() |
||||
|
Cudd_addLogXY() |
||||
|
Cudd_addFloor() |
||||
|
Cudd_addCeil() |
||||
|
Cudd_EqualSupNormRel() |
||||
|
cuddAddMinAbstractRecur() |
||||
|
cuddAddMaxAbstractRecur() |
||||
|
cuddAddFirstAbstractRecur() |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[util/Makefile] |
||||
|
|
||||
|
* Disabled -DUNIX flag so that MingW version compiles OK. |
||||
|
Don't think we need anything that this adds in. |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[util/cpu_time.c] |
||||
|
|
||||
|
* Extended util_cpu_time() function to work under MingW. |
||||
|
|
||||
|
------------------ |
||||
|
|
||||
|
[util/pipefork.c] |
||||
|
|
||||
|
* Added #ifdef around #include of <sys/wait.h> so that MingW version |
||||
|
can specify that it doesn't have it. |
||||
|
|
||||
@ -0,0 +1,137 @@ |
|||||
|
#include <stdio.h> |
||||
|
#include "util.h" |
||||
|
|
||||
|
#if (defined(sun) && ! defined(sparc)) || defined(vax) |
||||
|
|
||||
|
#include <signal.h> |
||||
|
#include <sys/types.h> |
||||
|
#include <sys/time.h> |
||||
|
|
||||
|
static char *save_stack_base; |
||||
|
static char *stack_lo_addr; |
||||
|
static char *stack_hi_addr; |
||||
|
static int stack_size; |
||||
|
|
||||
|
static int restart_global_flag; |
||||
|
static char *old_file_name; |
||||
|
static char *new_file_name; |
||||
|
|
||||
|
char *util_save_sp; /* set by util_restart_save_state() */ |
||||
|
extern char *sbrk(); |
||||
|
|
||||
|
static void |
||||
|
grow_stack() |
||||
|
{ |
||||
|
int i, space[256]; |
||||
|
|
||||
|
for(i = 0; i < 256; i++) { |
||||
|
space[i] = 0; |
||||
|
} |
||||
|
if ((char *) &i > stack_lo_addr) { |
||||
|
grow_stack(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/* ARGSUSED */ |
||||
|
static int |
||||
|
handle_sigquit(int sig, int code, struct sigcontext *scp) |
||||
|
{ |
||||
|
if (util_restart_save_state()) { |
||||
|
/* we are restarting ! -- return from signal */ |
||||
|
|
||||
|
} else { |
||||
|
/* copy stack to user data space */ |
||||
|
stack_lo_addr = util_save_sp; |
||||
|
stack_size = stack_hi_addr - stack_lo_addr + 1; |
||||
|
save_stack_base = sbrk(stack_size); |
||||
|
(void) memcpy(save_stack_base, stack_lo_addr, stack_size); |
||||
|
|
||||
|
/* write a new executable */ |
||||
|
(void) fprintf(stderr, "Writing executable %s ...\n", new_file_name); |
||||
|
(void) util_save_image(old_file_name, new_file_name); |
||||
|
|
||||
|
/* terminate if signal was a QUIT */ |
||||
|
if (sig == SIGQUIT) { |
||||
|
(void) _exit(1); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
static void |
||||
|
restart_program() |
||||
|
{ |
||||
|
(void) fprintf(stderr, "Continuing execution ...\n"); |
||||
|
|
||||
|
/* create the stack */ |
||||
|
grow_stack(); |
||||
|
|
||||
|
#ifdef vax |
||||
|
asm("movl _util_save_sp,sp"); |
||||
|
#endif |
||||
|
#ifdef sun |
||||
|
asm("movl _util_save_sp,sp"); |
||||
|
#endif |
||||
|
|
||||
|
/* copy the stack back from user space */ |
||||
|
(void) memcpy(stack_lo_addr, save_stack_base, stack_size); |
||||
|
|
||||
|
/* remove the sbrk for the stack */ |
||||
|
if (sbrk(-stack_size) < 0) { |
||||
|
perror("sbrk"); |
||||
|
} |
||||
|
|
||||
|
util_restart_restore_state(); /* jump back into handle_sigquit() */ |
||||
|
} |
||||
|
|
||||
|
void |
||||
|
util_restart(char const *old, char const *neW, int interval) |
||||
|
{ |
||||
|
struct itimerval itimer; |
||||
|
|
||||
|
#ifdef vax |
||||
|
#ifdef ultrix |
||||
|
stack_hi_addr = (char *) 0x7fffe3ff; /* ultrix */ |
||||
|
#else |
||||
|
stack_hi_addr = (char *) 0x7fffebff; /* bsd 4.3 */ |
||||
|
#endif |
||||
|
#endif |
||||
|
#ifdef sun |
||||
|
stack_hi_addr = (char *) 0x0effffff; /* Sun OS 3.2, 3.4 */ |
||||
|
#endif |
||||
|
|
||||
|
old_file_name = old; |
||||
|
new_file_name = neW; |
||||
|
|
||||
|
(void) signal(SIGQUIT, handle_sigquit); |
||||
|
|
||||
|
if (interval > 0) { |
||||
|
(void) signal(SIGVTALRM, handle_sigquit); |
||||
|
itimer.it_interval.tv_sec = interval; |
||||
|
itimer.it_interval.tv_usec = 0; |
||||
|
itimer.it_value.tv_sec = interval; |
||||
|
itimer.it_value.tv_usec = 0; |
||||
|
if (setitimer(ITIMER_VIRTUAL, &itimer, (struct itimerval *) 0) < 0) { |
||||
|
perror("setitimer"); |
||||
|
exit(1); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (restart_global_flag) { |
||||
|
restart_program(); |
||||
|
} |
||||
|
restart_global_flag = 1; |
||||
|
} |
||||
|
|
||||
|
#else |
||||
|
|
||||
|
/* ARGSUSED */ |
||||
|
void |
||||
|
util_restart(char const *old, char const *neW, int interval) |
||||
|
{ |
||||
|
(void) fprintf(stderr, |
||||
|
"util_restart: not supported on your operating system/hardware\n"); |
||||
|
} |
||||
|
|
||||
|
#endif |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue