फ़ाइबर और उपयोगकर्ता-स्तरीय थ्रेड
Windows पर हर libSceFiber फ़ाइबर एक असली Windows फ़ाइबर है, इसलिए स्विच गेस्ट रजिस्टर और गेस्ट स्टैक बनाए रखता है। उपयोगकर्ता-स्तरीय थ्रेड उसी pthread पथ से शुरू होते हैं।
10 अक्टूबर 2026 तक के रिपॉज़िटरी नोट्स
फ़ाइबर कुछ-न-करने वाला ऑपरेशन क्यों नहीं हो सकता
गेस्ट कोड नेटिव मशीन कोड के रूप में चलता है। फ़ाइबर स्विच को ठीक वही रजिस्टर और ठीक वही स्टैक लौटाना होता है, जिस स्टैक पर होस्ट और गेस्ट फ़्रेम मिले होते हैं। बिना स्विच किए sceFiberSwitch से सफलता लौटाने पर गेम ग़लत स्टैक पर चलता रहता और दोनों पक्ष बिगड़ जाते।
PS5PCEM हर आरंभ किए गेस्ट फ़ाइबर को एक Windows फ़ाइबर से समर्थित करता है। sceFiberRun, sceFiberSwitch और sceFiberReturnToThread यही तंत्र इस्तेमाल करते हैं। sceFiberRun को कॉल करने वाला थ्रेड रूट फ़ाइबर है। सार्वजनिक 128-बाइट SceFiber रिकॉर्ड ABI सिग्नेचर, स्थिति, प्रवेश आर्ग्युमेंट, नाम और कॉलर द्वारा दी गई कॉन्टेक्स्ट रेंज रखता है।
स्टैक किसका है
गेम एक कॉन्टेक्स्ट बफ़र देता है, और वह बफ़र ABI ऑब्जेक्ट में दर्ज होता है। असली स्टैक का मालिक Windows है। गेम के बफ़र को नेटिव Windows स्टैक के रूप में इस्तेमाल करने से वह गार्ड पेज और अनवाइंड हिसाब-किताब छूट जाता जिसकी ऑपरेटिंग सिस्टम को ज़रूरत है। फ़र्मवेयर रिकॉर्ड द्वारा अपेक्षित न्यूनतम कॉन्टेक्स्ट फिर भी संरेखण और शुरू तथा अंत के सिग्नेचर के साथ जाँचा जाता है।
sceFiberGetSelf, समापन, थ्रेड-पार स्वामित्व जाँचें और रनटाइम रीसेट लागू हैं। बैकएंड Windows x86-64 नेटिव-निष्पादन लक्ष्य पर है। दूसरे होस्ट बाक़ी एम्युलेटर बना सकते हैं, और यह स्विच पथ वहाँ उपलब्ध नहीं है।
उपयोगकर्ता-स्तरीय थ्रेड
libSceUlt आरंभ और समापन सफल होते हैं ताकि गेम का जॉब सिस्टम शुरू हो सके। रनटाइम, प्रतीक्षा क्यू, क्यू-डेटा पूल, म्यूटेक्स, सेमाफ़ोर और क्यू गेम द्वारा आवंटित ऑब्जेक्ट के अनुसार होस्ट-पक्ष स्थिति रखते हैं। कार्य-आइटम ख़ुद मौजूदा pthread पथ से शुरू होते हैं। कार्य-क्षेत्र आकार क्वेरी वे संरेखित आकार लौटाती हैं जिनकी उन निर्माणों को उम्मीद है।
कर्नेल उपयोगकर्ता-एज इवेंट क्यू pthread सिंक्रोनाइज़ेशन जैसी ही अनुक्रम-सजग प्रतीक्षा साझा करती हैं। VideoOut फ़िल्टर -13 और ग्राफ़िक्स फ़िल्टर -14 इसी क्यू पर चलते हैं और हर पंजीकरण का पहचानकर्ता और उपयोगकर्ता डेटा रखते हैं। ULT शेड्यूलिंग का जोड़ है। यह दूसरा CPU एम्युलेटर नहीं जोड़ता।
क्या लागू है
- sceFiberRun, sceFiberSwitch और sceFiberReturnToThread के लिए Windows फ़ाइबर।
- ABI सिग्नेचर, स्वामित्व जाँचें और गार्ड पेज वाला होस्ट-स्वामित्व स्टैक।
- ULT आरंभ, क्यू, म्यूटेक्स, सेमाफ़ोर और pthread-आधारित कार्य-आइटम।
- VideoOut और ग्राफ़िक्स पूर्णता के साथ साझा उपयोगकर्ता-एज इवेंट क्यू।
क्या अब भी बाक़ी है
- फ़ाइबर स्विच Windows x86-64 पर है। दूसरे होस्ट ऑपरेटिंग सिस्टम गेस्ट कोड नेटिव रूप से नहीं चलाते।
- फ़ाइबर पूर्व-खाली रूप से शेड्यूल होने वाला हार्डवेयर थ्रेड नहीं है।
- ULT वर्कर कोड के लिए अलग इंटरप्रेटर लागू नहीं करता।
संबंधित तंत्र
ये पेज क्या हैं