| 443 | } |
| 444 | |
| 445 | KFileDescriptorPtr KProcess::allocFileDescriptor(const std::shared_ptr<KObject>& kobject, U32 accessFlags, U32 descriptorFlags, S32 handle, U32 afterHandle) { |
| 446 | if (handle<0) { |
| 447 | handle = this->getNextFileDescriptorHandle(afterHandle); |
| 448 | } |
| 449 | KFileDescriptorPtr result = std::make_shared<KFileDescriptor>(shared_from_this(), kobject, accessFlags, descriptorFlags, handle); |
| 450 | |
| 451 | BOXEDWINE_CRITICAL_SECTION_WITH_MUTEX(fdsMutex); |
| 452 | this->fds.set(handle, result); |
| 453 | Fs::addDynamicLinkFile(fdNode->path+"/"+BString::valueOf(handle), k_mdev(0, 0), fdNode, false, [kobject] { |
| 454 | return kobject->selfFd(); |
| 455 | }); |
| 456 | return result; |
| 457 | } |
| 458 | |
| 459 | U32 translateOpenError() { |
| 460 | switch (errno) { |
no test coverage detected