Module Name: src
Committed By: martin
Date: Wed Jan 28 11:24:31 UTC 2015
Modified Files:
src/sys/external/bsd/vchiq/dist/interface/vchiq_arm [netbsd-7]:
vchiq_arm.c vchiq_kern_lib.c
Log Message:
Pull up following revision(s) (requested by skrll in ticket #464):
sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c:
revision 1.6
sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c: revision
1.16
It turns out we needed to track pid all along, so revert the lwp tracking
I did ages ago.
quake has a chance of working now.
To generate a diff of this commit:
cvs rdiff -u -r1.13.2.2 -r1.13.2.3 \
src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c
cvs rdiff -u -r1.5 -r1.5.2.1 \
src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c
diff -u src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c:1.13.2.2 src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c:1.13.2.3
--- src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c:1.13.2.2 Fri Jan 23 16:29:36 2015
+++ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c Wed Jan 28 11:24:31 2015
@@ -120,7 +120,7 @@ typedef struct user_service_struct {
struct bulk_waiter_node {
struct bulk_waiter bulk_waiter;
- struct lwp *l;
+ int pid;
struct list_head list;
};
@@ -135,7 +135,7 @@ struct vchiq_instance_struct {
int connected;
int closing;
- struct lwp *l;
+ int pid;
int mark;
struct list_head bulk_waiter_list;
@@ -527,7 +527,7 @@ vchiq_ioctl(struct file *fp, u_long cmd,
if (pargs->is_open) {
status = vchiq_open_service_internal
- (service, (uintptr_t)instance->l);
+ (service, instance->pid);
if (status != VCHIQ_SUCCESS) {
vchiq_remove_service(service->handle);
service = NULL;
@@ -660,7 +660,7 @@ vchiq_ioctl(struct file *fp, u_long cmd,
lmutex_lock(&instance->bulk_waiter_list_mutex);
list_for_each(pos, &instance->bulk_waiter_list) {
if (list_entry(pos, struct bulk_waiter_node,
- list)->l == current) {
+ list)->pid == current->l_proc->p_pid) {
waiter = list_entry(pos,
struct bulk_waiter_node,
list);
@@ -672,14 +672,14 @@ vchiq_ioctl(struct file *fp, u_long cmd,
lmutex_unlock(&instance->bulk_waiter_list_mutex);
if (!waiter) {
vchiq_log_error(vchiq_arm_log_level,
- "no bulk_waiter found for lwp %p",
- current);
+ "no bulk_waiter found for pid %d",
+ current->l_proc->p_pid);
ret = -ESRCH;
break;
}
vchiq_log_info(vchiq_arm_log_level,
- "found bulk_waiter %x for lwp %p",
- (unsigned int)waiter, current);
+ "found bulk_waiter %x for pid %d",
+ (unsigned int)waiter, current->l_proc->p_pid);
pargs->userdata = &waiter->bulk_waiter;
}
status = vchiq_bulk_transfer
@@ -704,13 +704,13 @@ vchiq_ioctl(struct file *fp, u_long cmd,
} else {
const VCHIQ_BULK_MODE_T mode_waiting =
VCHIQ_BULK_MODE_WAITING;
- waiter->l = current;
+ waiter->pid = current->l_proc->p_pid;
lmutex_lock(&instance->bulk_waiter_list_mutex);
list_add(&waiter->list, &instance->bulk_waiter_list);
lmutex_unlock(&instance->bulk_waiter_list_mutex);
vchiq_log_info(vchiq_arm_log_level,
- "saved bulk_waiter %x for lwp %p",
- (unsigned int)waiter, current);
+ "saved bulk_waiter %x for pid %d",
+ (unsigned int)waiter, current->l_proc->p_pid);
pargs->mode = mode_waiting;
}
@@ -1064,7 +1064,7 @@ vchiq_open(dev_t dev, int flags, int mod
}
instance->state = state;
- instance->l = l;
+ instance->pid = current->l_proc->p_pid;
#ifdef notyet
ret = vchiq_proc_add_instance(instance);
@@ -1205,8 +1205,8 @@ vchiq_close(struct file *fp)
list_del(pos);
vchiq_log_info(vchiq_arm_log_level,
"bulk_waiter - cleaned up %x "
- "for lwp %p",
- (unsigned int)waiter, waiter->l);
+ "for pid %d",
+ (unsigned int)waiter, waiter->pid);
_sema_destroy(&waiter->bulk_waiter.event);
kfree(waiter);
}
@@ -1297,9 +1297,9 @@ vchiq_dump_platform_instances(void *dump
instance = service->instance;
if (instance && !instance->mark) {
len = snprintf(buf, sizeof(buf),
- "Instance %x: lwp %p,%s completions "
+ "Instance %x: pid %d,%s completions "
"%d/%d",
- (unsigned int)instance, instance->l,
+ (unsigned int)instance, instance->pid,
instance->connected ? " connected, " :
"",
instance->completion_insert -
Index: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c
diff -u src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c:1.5 src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c:1.5.2.1
--- src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c:1.5 Wed Jul 16 23:59:58 2014
+++ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c Wed Jan 28 11:24:31 2015
@@ -42,7 +42,7 @@
struct bulk_waiter_node {
struct bulk_waiter bulk_waiter;
- struct lwp *l;
+ int pid;
struct list_head list;
};
@@ -151,8 +151,8 @@ VCHIQ_STATUS_T vchiq_shutdown(VCHIQ_INST
list_del(pos);
vchiq_log_info(vchiq_arm_log_level,
"bulk_waiter - cleaned up %x "
- "for lwp %p",
- (unsigned int)waiter, waiter->l);
+ "for pid %d",
+ (unsigned int)waiter, waiter->pid);
_sema_destroy(&waiter->bulk_waiter.event);
kfree(waiter);
@@ -290,7 +290,7 @@ VCHIQ_STATUS_T vchiq_open_service(
if (service) {
*phandle = service->handle;
status = vchiq_open_service_internal(service,
- (uintptr_t)current);
+ current->l_proc->p_pid);
if (status != VCHIQ_SUCCESS) {
vchiq_remove_service(service->handle);
*phandle = VCHIQ_SERVICE_HANDLE_INVALID;
@@ -396,7 +396,7 @@ vchiq_blocking_bulk_transfer(VCHIQ_SERVI
lmutex_lock(&instance->bulk_waiter_list_mutex);
list_for_each(pos, &instance->bulk_waiter_list) {
if (list_entry(pos, struct bulk_waiter_node,
- list)->l == current) {
+ list)->pid == current->l_proc->p_pid) {
waiter = list_entry(pos,
struct bulk_waiter_node,
list);
@@ -448,13 +448,13 @@ vchiq_blocking_bulk_transfer(VCHIQ_SERVI
kfree(waiter);
} else {
- waiter->l = current;
+ waiter->pid = current->l_proc->p_pid;
lmutex_lock(&instance->bulk_waiter_list_mutex);
list_add(&waiter->list, &instance->bulk_waiter_list);
lmutex_unlock(&instance->bulk_waiter_list_mutex);
vchiq_log_info(vchiq_arm_log_level,
- "saved bulk_waiter %x for lwp %p",
- (unsigned int)waiter, current);
+ "saved bulk_waiter %x for pid %d",
+ (unsigned int)waiter, current->l_proc->p_pid);
}
return status;