[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[no subject]



Hallo William!

Thank you for your mail with the detailed explanations.
Thomas Manzke answered you already. But we are not shure whether you got
the mail because the US - connection is down the most time.

So I will repeat his question (slightly changed) at the beginning of this mail
and include the signal-file, belonging to the question, at the end of the 
file.

------------------------------------------------------------------------

Hallo William,

we have just booted our new MIPS-machine (TARGON 4400P, a Pyramid-machine).
below you can see the listing of the file  /usr/include/signal.h  of our  
TARGON. Could you please comment on the difficulties to get this work 
with CMU-LISP?

------------------------------------------------------------------------


In the meantime some other questions came up.

1) We don't have a suitable Lisp to run genesis.
   So we are trying to use the kernel.core directly. Later on we want
   to run genesis in this first system.
   We are now analyzing the core file.
   We "relocated" the objects due to the space problems of our swapping
   system.
   We disassembled the code vectors and found out, that only assembler routines
   are addressed by the J and JAl instructions.
   There are quiet a lot of BREAK instructions inside the code. For which pur-
   pose are they used ? Are they used for error exits ? Can you tell us some-
   thing about the memory word immediately following such a BREAK instruction?

   Do you see any problem (beside those you already wrote about) to get the
   kernel.core running ?

2)
> So if you are staying with a processor that we already have a compiler
> backend for, almost all of the work is in fixing ldb to work with your
> operating system.  The exceptions are the few places operating system
> dependencies actually exist in the lisp code.  I can only think of one
> off hand, and it would take about 15 minutes to fix.

   Can you give us some hints for the "few places of operating system
   dependencies" ?

3) We want to give you some more details about our question concerning the
   scope of declarations (see CLtL2, 9.1 Declaration Syntax, page 219):

   ... An important change from the first edition is that "initialization"
   forms are specifically not included as part of the body ...

   Did you already change it ?

4) Scott Fahlman wrote , PCL would be ported to the Phyton-compiler.
   Is this work done and what PCL - version do you take? (We have some  
   experience with the may-day - version.) 


Thank you for your efforts, with best regards

                                                     Thekla
-------------------------------------------------------------------------

Now the file /usr/include/signal.h (TARGON) follows:

/*	Copyright (c) 1988 AT&T	*/
/*	  All Rights Reserved  	*/

/*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*/
/*	The copyright notice above does not evidence any   	*/
/*	actual or intended publication of such source code.	*/

#ifndef _SIGNAL_H
#define _SIGNAL_H

#ident	"@(#)head:signal.h	PTrev: 1.5	5/16/90 18:26:34"

typedef int 	sig_atomic_t;

extern char *_sys_siglist[];
extern int _sys_nsig;

#include <sys/signal.h>

#if defined(__STDC__)

extern void (*signal(int, void (*)(int)))(int);
extern int raise(int);

#if __STDC__ == 0 || defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
#include <sys/types.h>
extern int kill(pid_t, int);
extern int sigaction(int, const struct sigaction *, struct sigaction *);
extern int sigaddset(sigset_t *, int);
extern int sigdelset(sigset_t *, int);
extern int sigemptyset(sigset_t *);
extern int sigfillset(sigset_t *);
extern int sigismember(const sigset_t *, int);
extern int sigpending(sigset_t *);
extern int sigprocmask(int, const sigset_t *, sigset_t *);
extern int sigsuspend(sigset_t *);
#endif

#if __STDC__ == 0 && !defined(_POSIX_SOURCE)
#include <sys/procset.h>
extern int gsignal(int);
extern void (*sigset(int, void (*)(int)))(int);
extern int sighold(int);
extern int sigrelse(int);
extern int sigignore(int);
extern int sigpause(int);
extern int (*ssignal(int, int (*)(int)))(int);
extern int sigaltstack(const stack_t *, stack_t *);
extern int sigsend(idtype_t, id_t, int);
extern int sigsendset(const procset_t *, int);
#endif

#else
extern void (*sigset())();
extern void (*signal())();

#endif 	/* __STDC__ */

#endif 	/* _SIGNAL_H */


;-----------------------------------------------------------------------

And at the end the file /usr/include/sys/signal.h (TARGON)


/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
/*	  All Rights Reserved  	*/

/*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*/
/*	The copyright notice above does not evidence any   	*/
/*	actual or intended publication of such source code.	*/

#ifndef _SYS_SIGNAL_H
#define _SYS_SIGNAL_H

#ident	"@(#)head.sys:signal.h	1.3.8.1"

#define	SIGHUP	1	/* hangup */
#define	SIGINT	2	/* interrupt (rubout) */
#define	SIGQUIT	3	/* quit (ASCII FS) */
#define	SIGILL	4	/* illegal instruction (not reset when caught) */
#define	SIGTRAP	5	/* trace trap (not reset when caught) */
#define	SIGIOT	6	/* IOT instruction */
#define SIGABRT 6	/* used by abort, replace SIGIOT in the future */
#define	SIGEMT	7	/* EMT instruction */
#define	SIGFPE	8	/* floating point exception */
#define	SIGKILL	9	/* kill (cannot be caught or ignored) */
#define	SIGBUS	10	/* bus error */
#define	SIGSEGV	11	/* segmentation violation */
#define	SIGSYS	12	/* bad argument to system call */
#define	SIGPIPE	13	/* write on a pipe with no one to read it */
#define	SIGALRM	14	/* alarm clock */
#define	SIGTERM	15	/* software termination signal from kill */
#define	SIGUSR1	16	/* user defined signal 1 */
#define	SIGUSR2	17	/* user defined signal 2 */
#define	SIGCLD	18	/* child status change */
#define	SIGCHLD	18	/* child status change alias (POSIX) */
#define	SIGPWR	19	/* power-fail restart */
#define SIGWINCH 20	/* window size change */
#define SIGURG	21	/* urgent socket condition */
#define SIGPOLL 22	/* pollable event occured */
#define SIGIO	22	/* socket I/O possible (SIGPOLL alias) */
#define SIGSTOP 23	/* stop (cannot be caught or ignored) */
#define SIGTSTP 24	/* user stop requested from tty */
#define SIGCONT 25	/* stopped process has been continued */
#define SIGTTIN 26	/* background tty read attempted */
#define SIGTTOU 27	/* background tty write attempted */
#define SIGVTALRM 28	/* virtual timer expired */
#define SIGPROF 29	/* profiling timer expired */
#define SIGXCPU 30	/* exceeded cpu limit */
#define SIGXFSZ 31	/* exceeded file size limit */

#if !defined(mips) || defined(LANGUAGE_C)

#define	SIG_DFL	(void(*)())0

#if defined(lint)
#define SIG_ERR (void(*)())0
#define	SIG_IGN	(void (*)())0
#define SIG_HOLD (void(*)())0
#else
#define SIG_ERR	(void(*)())-1
#define	SIG_IGN	(void (*)())1
#define SIG_HOLD (void(*)())2
#endif

#if (__STDC__ - 0 == 0) || defined(_POSIX_SOURCE)
typedef struct {		/* signal set type */
	unsigned long	sigbits[4];
} sigset_t;

struct sigaction {
	int sa_flags;
	void (*sa_handler)();
	sigset_t sa_mask;
	int sa_resv[2];
};

/* these are only valid for SIGCLD */
#define SA_NOCLDSTOP	0x00020000	/* don't send job control SIGCLD's */
#endif

#endif	/* !defined(mips) || defined(LANGUAGE_C) */

#define SIG_BLOCK	1
#define SIG_UNBLOCK	2
#define SIG_SETMASK	3

#define SIGNO_MASK	0xFF
#define SIGDEFER	0x100
#define SIGHOLD		0x200
#define SIGRELSE	0x400
#define SIGIGNORE	0x800
#define SIGPAUSE	0x1000

#if (__STDC__ - 0 == 0) && !defined(_POSIX_SOURCE)
			/* non-comformant ANSI compilation	*/

/* definitions for the sa_flags field */
#define SA_ONSTACK	0x00000001
#define SA_RESETHAND	0x00000002
#define SA_RESTART	0x00000004
#define SA_SIGINFO	0x00000008
#define SA_NODEFER	0x00000010

/* these are only valid for SIGCLD */
#define SA_NOCLDWAIT	0x00010000	/* don't save zombie children	 */

#define NSIG	32	/* valid signals range from 1 to NSIG-1 */
#define MAXSIG	32	/* size of u_signal[], NSIG-1 <= MAXSIG */

#define S_SIGNAL	1
#define S_SIGSET	2
#define S_SIGACTION	3
#define S_NONE		4

#define MINSIGSTKSZ	512
#define SIGSTKSZ	8192

#define SS_ONSTACK	0x00000001
#define SS_DISABLE	0x00000002

#if !defined(mips) || defined(LANGUAGE_C)

struct sigaltstack {
	char	*ss_sp;
	int	ss_size;
	int	ss_flags;
};

typedef struct sigaltstack stack_t;

#endif	/* !defined(mips) || defined(LANGUAGE_C) */

#endif

#ifdef _KERNEL 

extern k_sigset_t	

	fillset,		/* valid signals, guaranteed contiguous */
	holdvfork,		/* held while doing vfork */
	cantmask,		/* cannot be caught or ignored */
	cantreset,		/* cannot be reset after catching */
	ignoredefault,		/* ignored by default */
	stopdefault,		/* stop by default */
	coredefault;		/* dumps core by default */

#define	sigmask(n)		((unsigned long)1 << ((n) - 1))

#define sigemptyset(s)		(*(s) = 0)
#define sigfillset(s)		(*(s) = fillset)
#define sigaddset(s,n)		(*(s) |= sigmask(n))
#define sigdelset(s,n)		(*(s) &= ~sigmask(n))
#define	sigismember(s,n)	(sigmask(n) & *(s))
#if !defined(_POSIX_SOURCE) 
#define sigisempty(s)		(*(s) == 0)
#define sigorset(s1,s2)		(*(s1) |= *(s2))
#define	sigandset(s1,s2)	(*(s1) &= *(s2))
#define	sigdiffset(s1,s2)	(*(s1) &= ~(*(s2)))
#define sigutok(us,ks)		(*(ks) = (us)->sigbits[0])
#define sigktou(ks,us)		((us)->sigbits[0] = *(ks),	\
				 (us)->sigbits[1] = 0,	\
				 (us)->sigbits[2] = 0,	\
				 (us)->sigbits[3] = 0)

#endif /* !defined(_POSIX_SOURCE) */ 
typedef struct {
	int	sig;
	int	perm;
	int	checkperm;
} sigsend_t;

#if !defined(_POSIX_SOURCE) 
#if defined(__STDC__)
extern void setsigact(int, void (*)(), k_sigset_t, int);
#else
extern void setsigact();
#endif	/* __STDC__ */
#endif /* !defined(_POSIX_SOURCE) */ 

#endif /* _KERNEL */

#endif /* _SYS_SIGNAL_H */