Lines Matching refs:user

782 static void sbefifo_release_command(struct sbefifo_user *user)
784 if (is_vmalloc_addr(user->pending_cmd))
785 vfree(user->pending_cmd);
786 user->pending_cmd = NULL;
787 user->pending_len = 0;
793 struct sbefifo_user *user;
795 user = kzalloc(sizeof(struct sbefifo_user), GFP_KERNEL);
796 if (!user)
799 file->private_data = user;
800 user->sbefifo = sbefifo;
801 user->cmd_page = (void *)__get_free_page(GFP_KERNEL);
802 if (!user->cmd_page) {
803 kfree(user);
806 mutex_init(&user->file_lock);
807 user->cmd_timeout_ms = SBEFIFO_TIMEOUT_IN_CMD;
808 user->read_timeout_ms = SBEFIFO_TIMEOUT_START_RSP;
816 struct sbefifo_user *user = file->private_data;
823 if (!user)
825 sbefifo = user->sbefifo;
829 mutex_lock(&user->file_lock);
832 if (user->pending_len == 0) {
836 if (user->pending_len < 8) {
840 cmd_len = user->pending_len >> 2;
851 sbefifo->timeout_in_cmd_ms = user->cmd_timeout_ms;
852 sbefifo->timeout_start_rsp_ms = user->read_timeout_ms;
853 rc = __sbefifo_submit(sbefifo, user->pending_cmd, cmd_len, &resp_iter);
863 sbefifo_release_command(user);
864 mutex_unlock(&user->file_lock);
871 struct sbefifo_user *user = file->private_data;
875 if (!user)
877 sbefifo = user->sbefifo;
883 mutex_lock(&user->file_lock);
887 user->pending_cmd = user->cmd_page;
889 user->pending_cmd = vmalloc(len);
890 if (!user->pending_cmd) {
896 if (copy_from_user(user->pending_cmd, buf, len)) {
902 if (len == 4 && be32_to_cpu(*(__be32 *)user->pending_cmd) ==
906 user->pending_len = 0;
912 rc = sbefifo_request_reset(user->sbefifo);
920 user->pending_len = len;
922 if (!user->pending_len)
923 sbefifo_release_command(user);
925 mutex_unlock(&user->file_lock);
933 struct sbefifo_user *user = file->private_data;
935 if (!user)
938 sbefifo_release_command(user);
939 free_page((unsigned long)user->cmd_page);
940 kfree(user);
945 static int sbefifo_cmd_timeout(struct sbefifo_user *user, void __user *argp)
947 struct device *dev = &user->sbefifo->dev;
954 user->cmd_timeout_ms = SBEFIFO_TIMEOUT_IN_CMD;
955 dev_dbg(dev, "Command timeout reset to %us\n", user->cmd_timeout_ms / 1000);
959 user->cmd_timeout_ms = timeout * 1000; /* user timeout is in sec */
964 static int sbefifo_read_timeout(struct sbefifo_user *user, void __user *argp)
966 struct device *dev = &user->sbefifo->dev;
973 user->read_timeout_ms = SBEFIFO_TIMEOUT_START_RSP;
974 dev_dbg(dev, "Timeout reset to %us\n", user->read_timeout_ms / 1000);
978 user->read_timeout_ms = timeout * 1000; /* user timeout is in sec */
985 struct sbefifo_user *user = file->private_data;
988 if (!user)
991 mutex_lock(&user->file_lock);
994 rc = sbefifo_cmd_timeout(user, (void __user *)arg);
997 rc = sbefifo_read_timeout(user, (void __user *)arg);
1000 mutex_unlock(&user->file_lock);