Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Dec 1996 21:07:32 -0300 (ARST)
From:      Miguel Angel Sagreras <msagre@cactus.fi.uba.ar>
To:        emulation@freebsd.org
Cc:        freebsd-hackers@freebsd.org
Subject:   Running ORACLE 7.2.2.4 on FreeBSD 2.2-SNAP
Message-ID:  <Pine.BSF.3.91.961204210556.15105D-100000@cactus.fi.uba.ar>

next in thread | raw e-mail | index | archive | help

To get ORACLE 7.2.2.4 for SCO running on FreeBSD 2.2-961014-SNAP, I have to 
modify two system call in the IBCS2 emulator. The first one was 
the system call ulimit, it returns -1 on type conversion between 
the 64 bits in the FreeBSD ffs and 32 bits type SCO fs causing  
ORACLE exit. The second one was signal system call, I had to mask 
IBCS2_..._MASK  in it, I haven't IBCS2 reference manual, to modify 
the source to get the rigth code.

To see the signal systemcall problem. I run the SCO binary of the 
next program.

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/sem.h>

int sid;
struct sembuf sb;
int time;

void sigalarm (int id)
{
	signal (0x100|SIGALRM, sigalarm); 
	alarm (1);
	printf ("%d %s\n",time+1, (time) ? "times" : "time");
	time++;
	semop (sid, &sb, 1);
}

main ()
{

	sid = semget (1234, 5, IPC_CREAT|0666);
	sb.sem_num = 1;
	sb.sem_op = -1;
	sb.sem_flg = 0;

	signal (0x100|SIGALRM, sigalarm);
	alarm (1);
	semop (sid, &sb, 1);
	return 0;
}

When I run it on SCO, I got this output.

1 time
2 times
3 times
4 times
....

But when I run in FreeBSD, I got only this.

1 time

Here, you have the modification I did.

In file ibcs2_misc.c function ibcs2_ulimit 

	case IBCS2_GETFSIZE:     
	*retval = p->p_rlimit[RLIMIT_FSIZE].rlim_cur;
	if (*retval == -1) (*retval)--;                     
	return 0; 


In ibcs2_signal.c function ibcs2_sigsys

int ibcs2_sigsys(p, uap, retval)
     register struct proc *p; 
     struct ibcs2_sigsys_args *uap; 
     int *retval;
 {   struct sigaction sa;
     int signum;
     int error;
     caddr_t sg = stackgap_init(); 
     uap->sig &= 0xff;
     signum = ibcs2_to_bsd_sig[IBCS2_SIGNO(SCARG(uap, sig))]; 




    Miguel A. Sagreras
  Facultad de ingenieria
Universidad de Buenos Aires

e-mail : msagre@cactus.fi.uba.ar




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.91.961204210556.15105D-100000>