diff options
author | Miloslav Trmač <mitr@redhat.com> | 2010-08-23 20:28:32 +0200 |
---|---|---|
committer | Miloslav Trmač <mitr@redhat.com> | 2010-08-23 20:28:32 +0200 |
commit | b3fcd1e159bf7bd5b318d4558198fca090deb2fe (patch) | |
tree | d1821ce0be2ede05bc3417bcba2ace0e2002e250 /userspace/ncrypto_fd.c | |
parent | c3eeccf6491c632037dfef737f3e40ed24e5bf72 (diff) | |
parent | a3fe06856efe0a7b4ad713ff73a14f6af995d07e (diff) | |
download | cryptodev-linux-integration.tar.gz cryptodev-linux-integration.tar.xz cryptodev-linux-integration.zip |
Merge branch 'userspace' into integrationintegration
Conflicts:
examples/Makefile
Diffstat (limited to 'userspace/ncrypto_fd.c')
-rw-r--r-- | userspace/ncrypto_fd.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/userspace/ncrypto_fd.c b/userspace/ncrypto_fd.c new file mode 100644 index 0000000..7a9aa5f --- /dev/null +++ b/userspace/ncrypto_fd.c @@ -0,0 +1,72 @@ +/* + * Copyright 2010 Red Hat, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY RED HAT, INC. AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL RED HAT, INC. OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * Red Hat author: Jan Chadima <jchadima@redhat.com> + */ + +#include <sys/types.h> +#include <fcntl.h> +#include <pthread.h> +#include <unistd.h> +#include <linux/ncr.h> +#include "ncrypto.h" +#include "ncrypto_internal.h" + +int __ncr_file_descriptor = -1; +static int open_count = 0; +static pthread_mutex_t open_lock = PTHREAD_MUTEX_INITIALIZER; + +int +__ncr_global_init() +{ + int rv = 0; + + /* Open the crypto device unles is not already initialized */ + pthread_mutex_lock(&open_lock); + if ((__ncr_file_descriptor < 0) && ((__ncr_file_descriptor = open("/dev/crypto", O_RDWR|O_CLOEXEC)) < 0)) + rv = -1; + else + ++open_count; + pthread_mutex_unlock(&open_lock); + return rv; +} + +int +ncr_global_init(unsigned int flags) +{ + return __ncr_global_init(); +} + +void +ncr_global_deinit(void) +{ + pthread_mutex_lock(&open_lock); + if (!--open_count && (__ncr_file_descriptor >= 0)) { + close(__ncr_file_descriptor); + __ncr_file_descriptor = -1; + } + pthread_mutex_unlock(&open_lock); +} + |