jpegioctl(dev, cmd, data, flag, cred_p, rval_p)
dev_t               dev;
int         cmd;
int         data;
int         flag;
cred_t             *cred_p;
int         *rval_p;
{
     JPEG_conf_t    *dic;     /* SIB-Struktur */
     struct cl_ioctl     *cli;
     struct dl_ioctl     *dli;
     int errorn = 0,i,ret_val;
     major_t           gmaj;
     minor_t           gmin;
     int  *data_t=data;
     short data_w,offset;

     gmaj =  getmajor(dev);
     gmin =  getminor(dev);

     /* Auf der Minor-Nummer wird die SIB-Struktur gefunden, die
        beim Boot-Vorgang des Systems initialisiert wurde */ 

     dic = (JPEG_conf_t *)DIP(gmin); 

     switch (cmd) {
     case CL550_COMPRESS: 

               /* Speicherzuordnung für die Benutzer-ioctl-Struktur */
               cli = (struct cl_ioctl *) calloc(sizeof(struct cl_ioctl));

              /*Kopieren der Daten aus dem Benutzer- zum Kernel-Puffer*/

               copyin((caddr_t) data,(caddr_t)cli,
                         sizeof(struct cl_ioctl));

               copyout((caddr_t)cli, (caddr_t)data,
                          sizeof(struct cl_ioctl));

               CompressedFilePtr=cli->cfl;
               ImageFilePtr = cli->ifl;
               CompressedBytesInFile = 0;
               /* Aufrufen der Bildkomprimierungs-Routine  */
               ret_val = CompressFileToFile(cli->i_width,cli->i_height,
                            cli->qfactor,dic->io_start,cli->pixelmode);
               cli->cbif=CompressedBytesInFile;
               copyout((caddr_t)cli, (caddr_t)data,
                               sizeof(struct cl_ioctl));

               MEM_FREE(cli,sizeof(struct cl_ioctl));
               break;

               case CL550_DECOMPRESS: 

               /* ähnlich wie CL500_COMPRESS */

               break;

          default:
               errorn=EFAULT;
               break;
     }
     return errorn;
} /* Ende des jpegioctl-Einsprungspunktes */

















