diff options
Diffstat (limited to 'freebsd/sys/opencrypto/cryptodev.c')
-rw-r--r-- | freebsd/sys/opencrypto/cryptodev.c | 85 |
1 files changed, 9 insertions, 76 deletions
diff --git a/freebsd/sys/opencrypto/cryptodev.c b/freebsd/sys/opencrypto/cryptodev.c index d3f4ad1c..71872532 100644 --- a/freebsd/sys/opencrypto/cryptodev.c +++ b/freebsd/sys/opencrypto/cryptodev.c @@ -303,8 +303,6 @@ SYSCTL_TIMEVAL_SEC(_kern, OID_AUTO, cryptodev_warn_interval, CTLFLAG_RW, &warninterval, "Delay in seconds between warnings of deprecated /dev/crypto algorithms"); -#ifndef __rtems__ ->>>>>>> e79fbf70f7e... RTEMS static int cryptof_ioctl(struct file *, u_long, void *, struct ucred *, struct thread *); static int cryptof_stat(struct file *, struct stat *, @@ -327,9 +325,6 @@ static struct fileops cryptofops = { .fo_sendfile = invfo_sendfile, .fo_fill_kinfo = cryptof_fill_kinfo, }; -#else /* __rtems__ */ -static const rtems_filesystem_file_handlers_r cryptofops; -#endif /* __rtems__ */ static struct csession *csefind(struct fcrypt *, u_int); static bool csedelete(struct fcrypt *, u_int); @@ -773,27 +768,6 @@ bail: return (error); #undef SES2 } -#ifdef __rtems__ -static int -rtems_bsd_cryptof_ioctl(rtems_libio_t *iop, ioctl_command_t request, - void *buffer) -{ - struct thread *td; - int error; - - td = rtems_bsd_get_curthread_or_null(); - if (td != NULL) { - struct file *fp; - - fp = rtems_bsd_iop_to_fp(iop); - error = cryptof_ioctl(fp, request, buffer, NULL, td); - } else { - error = ENOMEM; - } - - return (rtems_bsd_error_to_status_and_errno(error)); -} -#endif /* __rtems__ */ static int cryptodev_cb(struct cryptop *); @@ -1384,17 +1358,11 @@ cryptodev_find(struct crypt_find_op *find) /* ARGSUSED */ static int -#ifndef __rtems__ cryptof_stat( struct file *fp, struct stat *sb, struct ucred *active_cred, struct thread *td) -#else /* __rtems__ */ -rtems_bsd_cryptof_stat(const rtems_filesystem_location_info_t *loc, - struct stat *buf -#endif /* __rtems__ */ -) { return (EOPNOTSUPP); @@ -1418,28 +1386,7 @@ cryptof_close(struct file *fp, struct thread *td) fp->f_data = NULL; return 0; } -#ifdef __rtems__ -static int -rtems_bsd_cryptof_close(rtems_libio_t *iop) -{ - struct thread *td; - int error; - - td = rtems_bsd_get_curthread_or_null(); - if (td != NULL) { - struct file *fp; - fp = rtems_bsd_iop_to_fp(iop); - error = cryptof_close(fp, td); - } else { - error = ENOMEM; - } - - return (rtems_bsd_error_to_status_and_errno(error)); -} -#endif /* __rtems__ */ - -#ifndef __rtems__ static int cryptof_fill_kinfo(struct file *fp, struct kinfo_file *kif, struct filedesc *fdp) { @@ -1447,7 +1394,6 @@ cryptof_fill_kinfo(struct file *fp, struct kinfo_file *kif, struct filedesc *fdp kif->kf_type = KF_TYPE_CRYPTO; return (0); } -#endif /* __rtems__ */ static struct csession * csefind(struct fcrypt *fcr, u_int ses) @@ -1567,10 +1513,17 @@ cryptoioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread } /* falloc automatically provides an extra reference to 'f'. */ finit(f, FREAD | FWRITE, DTYPE_CRYPTO, fcr, &cryptofops); +#ifdef __rtems__ + fd = rtems_bsd_libio_iop_allocate_with_file(td, fd, &rtems_bsd_sysgen_nodeops); + if (fd < 0) { + fdclose(td, f, fd); + mtx_destroy(&fcr->lock); + free(fcr, M_XDATA); + return (error); + } +#endif /* __rtems__ */ *(u_int32_t *)data = fd; -#ifndef __rtems__ fdrop(f, td); -#endif /* __rtems__ */ break; case CRIOFINDDEV: error = cryptodev_find((struct crypt_find_op *)data); @@ -1627,23 +1580,3 @@ MODULE_VERSION(cryptodev, 1); DECLARE_MODULE(cryptodev, cryptodev_mod, SI_SUB_PSEUDO, SI_ORDER_ANY); MODULE_DEPEND(cryptodev, crypto, 1, 1, 1); MODULE_DEPEND(cryptodev, zlib, 1, 1, 1); -#ifdef __rtems__ -static const rtems_filesystem_file_handlers_r cryptofops = { - .open_h = rtems_filesystem_default_open, - .close_h = rtems_bsd_cryptof_close, - .read_h = rtems_filesystem_default_read, - .write_h = rtems_filesystem_default_write, - .ioctl_h = rtems_bsd_cryptof_ioctl, - .lseek_h = rtems_filesystem_default_lseek, - .fstat_h = rtems_bsd_cryptof_stat, - .ftruncate_h = rtems_filesystem_default_ftruncate, - .fsync_h = rtems_filesystem_default_fsync_or_fdatasync, - .fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync, - .fcntl_h = rtems_filesystem_default_fcntl, - .poll_h = rtems_filesystem_default_poll, - .kqfilter_h = rtems_filesystem_default_kqfilter, - .readv_h = rtems_filesystem_default_readv, - .writev_h = rtems_filesystem_default_writev, - .mmap_h = rtems_filesystem_default_mmap -}; -#endif /* __rtems__ */ |