68 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* 
 | 
						|
 * ioctl.c for mdb -- decode an IOCTL system call
 | 
						|
 */
 | 
						|
#include "mdb.h"
 | 
						|
#ifdef SYSCALLS_SUPPORT
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
#include <fcntl.h>
 | 
						|
#include <sys/stat.h>
 | 
						|
#include <minix/type.h>
 | 
						|
#include <minix/callnr.h>
 | 
						|
#include <minix/com.h>
 | 
						|
#include <sys/ioctl.h>
 | 
						|
#include <sgtty.h>
 | 
						|
#include "proto.h"
 | 
						|
 | 
						|
static int get_request;
 | 
						|
 | 
						|
/* 
 | 
						|
 * decode ioctl call
 | 
						|
 * send or receive = 'R' or 'S'
 | 
						|
 */
 | 
						|
void decode_ioctl(sr, m)
 | 
						|
int sr;
 | 
						|
message *m;
 | 
						|
{
 | 
						|
int request, device;
 | 
						|
int high;
 | 
						|
long spek, flags;
 | 
						|
 | 
						|
   device  = m->m2_i1;
 | 
						|
   request = m->m2_i3;
 | 
						|
   spek    = m->m2_l1;
 | 
						|
   flags   = m->m2_l2;
 | 
						|
 | 
						|
#ifdef DEBUG
 | 
						|
   if( debug )
 | 
						|
   Printf("%c device=%d request=%c|%d m2_l1=%lx m2_l2=%lx\n",
 | 
						|
	sr,device,
 | 
						|
	(request >> 8) & BYTE,
 | 
						|
	request & BYTE,
 | 
						|
	spek,flags);
 | 
						|
#endif 
 | 
						|
 | 
						|
   if ( sr == 'R') request = get_request;
 | 
						|
 | 
						|
   if ( sr == 'S' ) {
 | 
						|
	Printf("Sending (%lx) ",   request);
 | 
						|
	get_request = request;
 | 
						|
   }
 | 
						|
   else
 | 
						|
	Printf("Receiving (%lx) ", request);
 | 
						|
	
 | 
						|
   high = ( request & 0xFFFF0000 ) >> 16 ;
 | 
						|
   request &= _IOCTYPE_MASK;
 | 
						|
 | 
						|
   Printf("Other IOCTL device=%d request=%c|%d flags=%x size =%d\n",
 | 
						|
	device, (request >> 8) & BYTE, request & BYTE,
 | 
						|
	(high  &  ~_IOCPARM_MASK ),
 | 
						|
	(high  &   _IOCPARM_MASK )
 | 
						|
	);
 | 
						|
   Printf("\n");
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#endif /* SYSCALLS_SUPPORT */
 |