Changeset 9e87562 in mainline for kernel/generic/src/ipc/ipcrsc.c
- Timestamp:
- 2017-09-18T20:52:12Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6abfd250
- Parents:
- e5f5ce0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ipc/ipcrsc.c
re5f5ce0 r9e87562 175 175 phone_t *phone_get(task_t *task, int handle) 176 176 { 177 phone_t *phone; 178 179 caps_lock(task); 177 180 cap_t *cap = cap_get(task, handle, CAP_TYPE_PHONE); 181 phone = (phone_t *) cap->kobject; 182 caps_unlock(task); 178 183 if (!cap) 179 184 return NULL; 180 185 181 return (phone_t *) cap->kobject;186 return phone; 182 187 } 183 188 … … 217 222 phone->state = IPC_PHONE_CONNECTING; 218 223 219 irq_spinlock_lock(&task->lock, true); 224 // FIXME: phase this out eventually 225 mutex_lock(&task->cap_info->lock); 220 226 cap_t *cap = cap_get(task, handle, CAP_TYPE_ALLOCATED); 221 cap->type = CAP_TYPE_PHONE;222 cap->kobject = (void *) phone;223 227 cap->can_reclaim = phone_can_reclaim; 224 irq_spinlock_unlock(&task->lock, true); 228 mutex_unlock(&task->cap_info->lock); 229 230 cap_publish(task, handle, CAP_TYPE_PHONE, phone); 225 231 } 226 232 … … 237 243 void phone_dealloc(int handle) 238 244 { 239 irq_spinlock_lock(&TASK->lock, true); 240 cap_t *cap = cap_get_current(handle, CAP_TYPE_PHONE); 245 cap_t *cap = cap_unpublish(TASK, handle, CAP_TYPE_PHONE); 241 246 assert(cap); 242 cap->type = CAP_TYPE_ALLOCATED;243 irq_spinlock_unlock(&TASK->lock, true);244 247 245 248 phone_t *phone = (phone_t *) cap->kobject;
Note:
See TracChangeset
for help on using the changeset viewer.