Commit Graph

206 Commits (a13ab958cbba75bc9abd1ca50f3030a10a75784e)

Author SHA1 Message Date
Emmanuel Gil Peyrot dc8479928c Sources: Run clang-format on everything. 9 years ago
Subv 7b445ddff0 Kernel/SVC: Implemented svcCreatePort. 9 years ago
wwylele 86ea7995ad SVC::WaitSynchronizationN: Reschedule at the end 9 years ago
Jannik Vogel af37dd0d52 Set fpscr for new threads 9 years ago
Subv 0fb6d2a247 Kernel: Implemented shared memory permissions. 9 years ago
Subv 1bd0cf542f Kernel/SharedMemory: Properly implemented shared memory support.
Applications can request the kernel to allocate a piece of the linear heap for them when creating a shared memory object.
Shared memory areas are now properly mapped into the target processes when calling svcMapMemoryBlock.

Removed the APT Shared Font hack as it is no longer needed.
9 years ago
bunnei 282a2ad539 Merge pull request #1766 from Subv/log_cpu
Kernel/Threading: Warn when a thread can be scheduled in the Syscore (Core 1)
9 years ago
Subv 5b7f86708c Kernel/Threading: Warn when a thread can be scheduled in the Syscore (Core 1).
We do not currently implement any cores other than the AppCore (Core 0).
9 years ago
bunnei 15d21c0dc5 Merge pull request #1647 from mailwl/acu-closeasync
ac:u: stub CloseAsync; align memory size in svc:GetProcessInfo(type=2)
9 years ago
Yuri Kunde Schlesner e3a8292495 Common: Remove section measurement from profiler (#1731)
This has been entirely superseded by MicroProfile. The rest of the code
can go when a simpler frametime/FPS meter is added to the GUI.
9 years ago
mailwl bd8cc69893 ac:u: stub CloseAsync; check memory size aling in svc:GetProcessInfo(type=2) 9 years ago
Lioncash 856a1d0386 svc: Move ResetType enum to the kernel event header 9 years ago
Kloen 1149e66820 ThreadProcessorId_All on SVC::CreateThread 9 years ago
Subv d90d5a0ee6 HLE/SVC: Implement UnmapMemoryBlock.
This implementation will need to be (almost completely) changed when we implement multiprocess support.
10 years ago
Lioncash 270cbb0119 svc: Remove superfluous printf argument 10 years ago
Lioncash 84afaaa10c svc: Fix compilation with LOG_TRACE enabled 10 years ago
Yuri Kunde Schlesner 84a22cb594 Kernel: Implement svcGetSystemInfo
This makes smealum/ctrulib@b96dd51d33 work
with Citra.
10 years ago
Yuri Kunde Schlesner 18c1c39d5e SVC: Advance time when calling GetSystemTick to escape busy-wait loops
Cubic Ninja waited for the frame to end by spinning on a loop calling
GetSystemTick while doing nothing else. Since GetSystemTick doesn't
cause a reschedule (which advances time), this meant that very little
emulated time would pass inside that loop, causing the game to spend
most of the frame burning away CPU.
10 years ago
Yuri Kunde Schlesner 0fcabd2b11 Integrate the MicroProfile profiling library
This brings goodies such as a configurable user interface and
multi-threaded timeline view.
10 years ago
Yuri Kunde Schlesner 14eca982f4 Kernel: Implement svcGetProcessInfo in a basic way
This also adds some basic memory usage accounting. These two types are
used by Super Smash Bros. during startup.
10 years ago
Yuri Kunde Schlesner 74d4bc0af1 Kernel: Add more infrastructure to support different memory layouts
This adds some structures necessary to support multiple memory regions
in the future. It also adds support for different system memory types
and the new linear heap mapping at 0x30000000.
10 years ago
Yuri Kunde Schlesner 69c3021a8d Move core/mem_map.{cpp,h} => core/hle/kernel/memory.{cpp,h} 10 years ago
Yuri Kunde Schlesner cdeeecf080 Kernel: Properly implement ControlMemory FREE and COMMIT 10 years ago
Yuri Kunde Schlesner 24d7c05c8d Merge pull request #888 from zawata/Warning-Fixes-2
Core\HLE : Fix Warning
10 years ago
Lioncash c2689b8c2c dyncom: Pass SVC immediates directly.
Previously it would just re-read the already decoded instruction and extract the immediate value.
10 years ago
Subv 83fa3f977d Kernel/SVC: Implemented svcQueryProcessMemory 10 years ago
Subv 9e2962081a Kernel/SVC: Implemented svcQueryMemory. 10 years ago
zawata f723a498e7 Core\HLE : Fix Warning
"signed/unsigned mismatch"
10 years ago
bunnei 71e8822d23 kernel: Fix svcWaitSynch to always acquire requested wait objects. 10 years ago
Emmanuel Gil Peyrot b1503b2020 Remove every trailing whitespace from the project (but externals). 10 years ago
Subv 732839b1f4 Core/SVC: Map the shared memory created in CreateMemoryBlock to the specified address.
This SharedMemory can be passed to service functions (Which should map the memory into their own address space).
10 years ago
bunnei 0b7d2941cf Kernel: Move reschedules from SVCs to actual mechanisms that reschedule. 10 years ago
archshift 11057488f9 Implement svcBreak 10 years ago
Subv d3634d4bf4 Core/ResourceLimits: Implemented the basic structure of ResourceLimits.
Implemented svcs GetResourceLimit, GetResourceLimitCurrentValues and GetResourceLimitLimitValues.

Note that the resource limits do not currently keep track of used objects, since we have no way to distinguish between an object created by the application, and an object created by some HLE module once we're inside Kernel::T::Create.
10 years ago
Yuri Kunde Schlesner 7ada357b2d Memmap: Re-organize memory function in two files
memory.cpp/h contains definitions related to acessing memory and
configuring the address space
mem_map.cpp/h contains higher-level definitions related to configuring
the address space accoording to the kernel and allocating memory.
10 years ago
Subv 25c010dc7d fixup! 10 years ago
Subv 41f74a16fd Core/HLE: Implemented the SVCs GetProcessId and GetProcessIdOfThread 10 years ago
Yuri Kunde Schlesner c96f22490a Kernel: Capture SharedMemory attributes at creation, not when mapping 10 years ago
Yuri Kunde Schlesner c956e8a686 Fix printf format warning 10 years ago
Yuri Kunde Schlesner e1fbac3ca1 Common: Remove common.h 10 years ago
Yuri Kunde Schlesner ecff2351a1 HLE: Clean up SVC dispatch mechanism 10 years ago
bunnei db4bd98bac SVC: Assert on unsupported CreateThread processor ID. 10 years ago
bunnei c077bcefa9 SVC: Update various SVCs to cause a reschedule.
- CreateMutex/ReleaseMutex/ReleaseSemaphore/SetTimer/CancelTimer/ArbitrateAddress
10 years ago
bunnei 7b9f428b23 Thread: Implement priority boost for starved threads.
SVC: Return correct error code on invalid CreateThread processor ID.

SVC: Assert when creating a thread with an invalid userland priority.
10 years ago
bunnei ee3377b67d SVC: Reschedule on svcCreateThread. 10 years ago
Lioncash 8cf81643a9 arm_interface: Get rid of GetTicks.
Removes a TODO.
10 years ago
archshift ef24e72b26 Asserts: break/crash program, fit to style guide; log.h->assert.h
Involves making asserts use printf instead of the log functions (log functions are asynchronous and, as such, the log won't be printed in time)
As such, the log type argument was removed (printf obviously can't use it, and it's made obsolete by the file and line printing)

Also removed some GEKKO cruft.
11 years ago
Kevin Hartman 5fcbfc06eb Scheduler refactor Pt. 1
* Simplifies scheduling logic, specifically regarding thread status. It should be much clearer which statuses are valid
for a thread at any given point in the system.
* Removes dead code from thread.cpp.
* Moves the implementation of resetting a ThreadContext to the corresponding core's implementation.

Other changes:
* Fixed comments in arm interfaces.
* Updated comments in thread.cpp
* Removed confusing, useless, functions like MakeReady() and ChangeStatus() from thread.cpp.
* Removed stack_size from Thread. In the CTR kernel, the thread's stack would be allocated before thread creation.
11 years ago
bunnei caa58acc84 WaitSynch: Always reschedule (verified behavior on hw). 11 years ago
Yuri Kunde Schlesner 88a4a808c6 Kernel: Stop creating useless Handles during object creation
They're finally unnecessary, and will stop cluttering the application's
handle table.
11 years ago
Yuri Kunde Schlesner c4208c1171 SVC: Enable CloseHandle, clean up DuplicateHandle 11 years ago
Yuri Kunde Schlesner 664c79ff47 Thread: Modernize two functions that slipped through previous rebases 11 years ago
Yuri Kunde Schlesner 8779b31fe6 Make Port/Service registration and querying more HW-accurate 11 years ago
Yuri Kunde Schlesner 58b544db99 SVC: Use CASCADE_RESULT in SVC handlers 11 years ago
Yuri Kunde Schlesner 09ae6e1fa3 Remove result.h InvalidHandle
It was only being used in two places, where it was replaced by a local
constant.
11 years ago
Yuri Kunde Schlesner 44f90340dc SVC: Change return type of handlers to ResultCode 11 years ago
Yuri Kunde Schlesner d52d859936 Kernel: Convert Event to not use Handles 11 years ago
Yuri Kunde Schlesner ad80ff1e32 Kernel: Convert Timer to (mostly) not use Handles 11 years ago
Yuri Kunde Schlesner 882b6fed75 Kernel: Convert Mutex to not use Handles 11 years ago
Yuri Kunde Schlesner 38e7122f23 Kernel: Convert AddressArbiter to not use Handles 11 years ago
Yuri Kunde Schlesner d9b19be1d9 Kernel: Convert Semaphore to not use Handles 11 years ago
Yuri Kunde Schlesner 4bb33dfc30 Kernel: Convert SharedMemory to not use Handles 11 years ago
bunnei 206cabc0e4 Merge pull request #412 from purpasmart96/svc_table_cleanup
SVC: Update the SVC function table
11 years ago
purpasmart96 62f4365db1 SVC: Update the SVC function table 11 years ago
bunnei 731154f79e WaitSynchronization: Added a result code for invalid result, fixed bug. 11 years ago
bunnei 68ddaaa2f5 Thread: Fix WaitSynchronization1 to not set register 1 on thread wakeup. 11 years ago
bunnei 15b6a4d9ad Kernel: Changed "ShouldWait" to return bool and "Acquire" to return void. 11 years ago
bunnei c68eb15695 WaitObject: Renamed "Wait" to "ShouldWait", made "ShouldWait" and "Acquire" pure virtual. 11 years ago
bunnei d2759c578e Kernel: Reschedule on SignalEvent and SendSyncRequest, fix some bugs. 11 years ago
bunnei 9412996c8f Kernel: Moved Wait and Acquire to WaitObject, added way to retrieve a WaitObject safely. 11 years ago
bunnei c06d64528a SVC: Removed a Sleep that made no sense
- Would deadlock the calling thread
- Code would never get hit anyways
11 years ago
bunnei 254e4ebd58 AddressArbiter: Changed to Kernel::Object, big cleanup, removed code that made no sense. 11 years ago
bunnei e5a9f1c644 Kernel: Get rid of WaitTypes and simplify lots of code, removing hacks. 11 years ago
bunnei 6deb1a0119 WaitSynchronizationN: Improved comments 11 years ago
bunnei 6643673f28 WaitSynchronizationN: Refactor to fix several bugs
- Separate wait checking from waiting the current thread
- Resume thread when wait_all=true only if all objects are available at once
- Set output to correct wait object index when there are duplicate handles
11 years ago
bunnei aa01c57ae9 Kernel: Separate WaitSynchronization into Wait and Acquire methods. 11 years ago
bunnei 627e96fc15 WaitSynchronizationN: Handle case where handles=nullptr. 11 years ago
bunnei f5c6d367c9 WaitSynchronizationN: Handle case where handle_count is invalid. 11 years ago
bunnei 064be2b86f WaitSynchronizationN: Handle case where handle_count=0. 11 years ago
bunnei 7faf2d8e06 WaitSynchronizationN: Implement return values 11 years ago
Subv 9e2ae289b8 AddrArbiter: Implement arbitration types 3 and 4. 11 years ago
Subv 38da198aa1 SVC: Wake up the thread after the delay in WaitSync1 11 years ago
archshift 228843c43e Logging: Log all called service functions (under trace). Compile out all trace logs under release for performance. 11 years ago
Yuri Kunde Schlesner 8ad41775cc Kernel: Start using boost::intrusive_ptr for lifetime management 11 years ago
bunnei 6ae12424df Merge pull request #444 from yuriks/handle-reform2
Kernel Lifetime Reform Pt. 2
11 years ago
bunnei 86e07124ad Merge pull request #436 from kevinhartman/system-core
Warn if a new thread is intended to be run on the system CPU core
11 years ago
Yuri Kunde Schlesner 9bf8462b96 Thread: Reduce use of Handles and move some funcs to inside the class. 11 years ago
Yuri Kunde Schlesner 7b3452c730 Move ThreadContext to core/core.h and deal with the fallout 11 years ago
bunnei d46f650036 Merge pull request #255 from Subv/cbranch_3
Implemented timers
11 years ago
Subv 07044651ef SVC: Implemented the Timer service calls. 11 years ago
Subv dfc440785a SVC: Fixed SleepThread.
It will now properly wait the specified number of nanoseconds and then wake up the thread.
11 years ago
Kevin Hartman 63be6aaadd Warn if a new thread is intended to be run on the system CPU core until we implement correct scheduling for such a thread. 11 years ago
Subv 97a7381d29 SOC_U: Preliminary implementation of sockets.
Stubbed CreateMemoryBlock

Using Berkeley sockets, and Winsock2.2 on Windows.
So far ftpony creates the socket and accepts incoming connections

SOC_U: Renamed functions to maintain consistency

Also prevents possible scope errors / conflicts with the actual Berkeley socket functions

SOCU: Close all the opened sockets when cleaning up SOCU
11 years ago
Yuri Kunde Schlesner 7e2903cb74 Kernel: New handle manager
This handle manager more closely mirrors the behaviour of the CTR-OS
one. In addition object ref-counts and support for DuplicateHandle have
been added.

Note that support for DuplicateHandle is still experimental, since parts
of the kernel still use Handles internally, which will likely cause
troubles if two different handles to the same object are used to e.g.
wait on a synchronization primitive.
11 years ago
Yuri Kunde Schlesner 73fba22c01 Rename ObjectPool to HandleTable 11 years ago
bunnei 0de6a08d75 Merge pull request #291 from purpasmart96/license
License change
11 years ago
purpasmart96 ebfd831ccb License change 11 years ago
bunnei 4fcdbed9f6 Thread: Wait current thread on svc_SleepThread
- Removed unused VBLANK sleep mode
- Added error log for bad context switch
- Renamed VerifyWait to CheckWaitType to be more clear
11 years ago
bunnei 7bae450379 Merge pull request #185 from purpasmart96/mem_perm
Kernel: Add missing permissions
11 years ago
Yuri Kunde Schlesner e321decf98 Remove SyncRequest from K::Object and create a new K::Session type
This is a first step at fixing the conceptual insanity that is our
handling of service and IPC calls. For now, interfaces still directly
derived from Session because we don't have the infrastructure to do it
properly. (That is, Processes and scheduling them.)
11 years ago