Lines Matching refs:pClient

122 static void add_msg(struct r3964_client_info *pClient, int msg_id, int arg,
125 struct r3964_client_info *pClient);
127 struct r3964_client_info *pClient);
485 struct r3964_client_info *pClient; in on_receive_block() local
544 for (pClient = pInfo->firstClient; pClient; pClient = pClient->next) { in on_receive_block()
545 if (pClient->sig_flags & R3964_SIG_DATA) { in on_receive_block()
546 add_msg(pClient, R3964_MSG_DATA, length, R3964_OK, in on_receive_block()
745 struct r3964_client_info *pClient; in findClient() local
747 for (pClient = pInfo->firstClient; pClient; pClient = pClient->next) { in findClient()
748 if (pClient->pid == pid) { in findClient()
749 return pClient; in findClient()
757 struct r3964_client_info *pClient; in enable_signals() local
765 pClient = *ppClient; in enable_signals()
767 if (pClient->pid == pid) { in enable_signals()
770 *ppClient = pClient->next; in enable_signals()
771 while (pClient->msg_count) { in enable_signals()
772 pMsg = remove_msg(pInfo, pClient); in enable_signals()
779 put_pid(pClient->pid); in enable_signals()
780 kfree(pClient); in enable_signals()
781 TRACE_M("enable_signals - kfree %p", pClient); in enable_signals()
787 pClient = findClient(pInfo, pid); in enable_signals()
788 if (pClient) { in enable_signals()
790 pClient->sig_flags = arg; in enable_signals()
793 pClient = kmalloc(sizeof(struct r3964_client_info), in enable_signals()
795 TRACE_M("enable_signals - kmalloc %p", pClient); in enable_signals()
796 if (pClient == NULL) in enable_signals()
800 spin_lock_init(&pClient->lock); in enable_signals()
801 pClient->sig_flags = arg; in enable_signals()
802 pClient->pid = get_pid(pid); in enable_signals()
803 pClient->next = pInfo->firstClient; in enable_signals()
804 pClient->first_msg = NULL; in enable_signals()
805 pClient->last_msg = NULL; in enable_signals()
806 pClient->next_block_to_read = NULL; in enable_signals()
807 pClient->msg_count = 0; in enable_signals()
808 pInfo->firstClient = pClient; in enable_signals()
818 struct r3964_client_info *pClient; in read_telegram() local
825 pClient = findClient(pInfo, pid); in read_telegram()
826 if (pClient == NULL) { in read_telegram()
830 block = pClient->next_block_to_read; in read_telegram()
837 remove_client_block(pInfo, pClient); in read_telegram()
844 static void add_msg(struct r3964_client_info *pClient, int msg_id, int arg, in add_msg() argument
850 if (pClient->msg_count < R3964_MAX_MSG_COUNT - 1) { in add_msg()
860 spin_lock_irqsave(&pClient->lock, flags); in add_msg()
868 if (pClient->last_msg == NULL) { in add_msg()
869 pClient->first_msg = pClient->last_msg = pMsg; in add_msg()
871 pClient->last_msg->next = pMsg; in add_msg()
872 pClient->last_msg = pMsg; in add_msg()
875 pClient->msg_count++; in add_msg()
880 spin_unlock_irqrestore(&pClient->lock, flags); in add_msg()
882 if ((pClient->last_msg->msg_id == R3964_MSG_ACK) in add_msg()
883 && (pClient->last_msg->error_code == R3964_OVERFLOW)) { in add_msg()
884 pClient->last_msg->arg++; in add_msg()
896 if (pClient->sig_flags & R3964_USE_SIGIO) { in add_msg()
897 kill_pid(pClient->pid, SIGIO, 1); in add_msg()
902 struct r3964_client_info *pClient) in remove_msg() argument
907 if (pClient->first_msg) { in remove_msg()
908 spin_lock_irqsave(&pClient->lock, flags); in remove_msg()
910 pMsg = pClient->first_msg; in remove_msg()
911 pClient->first_msg = pMsg->next; in remove_msg()
912 if (pClient->first_msg == NULL) { in remove_msg()
913 pClient->last_msg = NULL; in remove_msg()
916 pClient->msg_count--; in remove_msg()
918 remove_client_block(pInfo, pClient); in remove_msg()
919 pClient->next_block_to_read = pMsg->block; in remove_msg()
921 spin_unlock_irqrestore(&pClient->lock, flags); in remove_msg()
927 struct r3964_client_info *pClient) in remove_client_block() argument
931 TRACE_PS("remove_client_block PID %d", pid_nr(pClient->pid)); in remove_client_block()
933 block = pClient->next_block_to_read; in remove_client_block()
940 pClient->next_block_to_read = NULL; in remove_client_block()
1011 struct r3964_client_info *pClient, *pNext; in r3964_close() local
1025 pClient = pInfo->firstClient; in r3964_close()
1026 while (pClient) { in r3964_close()
1027 pNext = pClient->next; in r3964_close()
1028 while (pClient->msg_count) { in r3964_close()
1029 pMsg = remove_msg(pInfo, pClient); in r3964_close()
1035 put_pid(pClient->pid); in r3964_close()
1036 kfree(pClient); in r3964_close()
1037 TRACE_M("r3964_close - client kfree %p", pClient); in r3964_close()
1038 pClient = pNext; in r3964_close()
1065 struct r3964_client_info *pClient; in r3964_read() local
1083 pClient = findClient(pInfo, task_pid(current)); in r3964_read()
1084 if (pClient) { in r3964_read()
1085 pMsg = remove_msg(pInfo, pClient); in r3964_read()
1094 (pMsg = remove_msg(pInfo, pClient))); in r3964_read()
1132 struct r3964_client_info *pClient; in r3964_write() local
1172 pClient = findClient(pInfo, task_pid(current)); in r3964_write()
1173 if (pClient) { in r3964_write()
1174 pHeader->owner = pClient; in r3964_write()
1245 struct r3964_client_info *pClient; in r3964_poll() local
1252 pClient = findClient(pInfo, task_pid(current)); in r3964_poll()
1253 if (pClient) { in r3964_poll()
1256 pMsg = pClient->first_msg; in r3964_poll()