summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/opencrypto/cryptodev.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/opencrypto/cryptodev.c')
-rw-r--r--freebsd/sys/opencrypto/cryptodev.c85
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__ */