بروزرسانی وبسایت و API سیستمکالهای لینوکس: دسترسی یکجا به جدولهای ۲۷ معماری — Show HN: I've updated my Linux System Call website and API
خلاصه
توسعهدهنده وبسایت syscall.sh نسخه جدیدی از مرجع جامع سیستمکالهای لینوکس را منتشر کرده است. این ابزار با پشتیبانی از ۲۷ معماری مختلف، انتخابگر نسخه کرنل و فایلهای JSON ساختاریافته، بررسی شمارهها، آرگومانها و رجیسترهای فراخوانیهای سیستمی را برای مهندسان نرمافزار سادهتر میکند.
اگر تا به حال روی برنامهنویسی سیستمی، توسعه درایور یا ابزارهای سطح پایین در لینوکس کار کرده باشید، حتماً میدانید که پیدا کردن شماره دقیق سیستمکالها (System Calls)، آرگومانها و رجیسترهای مربوط به هر معماری سختافزاری چقدر میتواند طاقتفرسا باشد. ابزار وب syscall.sh دقیقاً برای حل همین مشکل طراحی شده است.
درباره پروژه و تاریخچه آن
این وبسایت نخستین بار در سال ۲۰۲۰ منتشر شد و اکنون در نسخه جدید، معماریهای بیشتر، قابلیت انتخاب نسخه کرنل (Kernel Selector)، توضیحات دقیقتر و بهبودهای رابط کاربری برای دستگاههای موبایل را دریافت کرده است. تمام این دادهها مستقیماً از سورسکد اصلی کرنل لینوکس استخراج شدهاند؛ سازنده ابزار با بررسی جدولهای سیستمکال و ماکروهای SYSCALL_DEFINE در نسخههای مختلف mainline، دقیقترین مقادیر را استخراج کرده است.
ویژگیهای کلیدی و جزئیات فنی
- پوشش وسیع معماریها: پشتیبانی از ۲۷ معماری مختلف شامل
x64،x86_64،arm64،riscv64،loongarch64،mipsو بسیاری موارد دیگر. - انتخابگر نسخه کرنل و تاریخچه تغییرات: کاربران میتوانند تغییرات سیستمکالها را بین نسخههای مختلف کرنل لینوکس رصد کنند. سیستمکالهای حذفشده نیز با مشخص شدن نسخه حذفشونده قابل مشاهده هستند.
- دسترسی به دادهها در قالب JSON: تمام اطلاعات جدولها به صورت فایلهای ساختاریافته در مسیرهای دسترسی دارند، مانند
/x64/syscalls.json. - مستندات و توضیحات: توضیحات کوتاه سیستمکالها از پروژه Linux man pages و بخش
io_uringاز کتابخانهliburingگرفته شدهاند. - رابط برنامهنویسی (API): توسعهدهندگان میتوانند از طریق
https://api.syscall.shبه اطلاعات دسترسی داشته باشند. برای نمونه، بررسی سیستمکالreadدر معماریx64با دستور زیر امکانپذیر است:
curl https://api.syscall.sh/v2/syscalls/x64/read
چرا این ابزار برای مهندسان اهمیت دارد؟
برای برنامهنویسان زبانهایی مانند Rust یا C که با فراخوانیهای مستقیم سیستم سر و کار دارند، یا طراحان کامپایلر و ابزارهای مانیتورینگ، داشتن یک مرجع واحد که تفاوتهای بین معماریهای مختلف (مثلاً نحوه قرارگیری آرگومانها در رجیسترها) را نشان دهد بسیار حیاتی است. همچنین دسترسی به API این امکان را میدهد تا ابزارهای سفارشی اتومیشن یا linting برای بررسی سازگاری کدها ساخته شوند.
نگاهی به نظرات هکرنیوز
در بحثهای شکلگرفته پیرامون این پروژه در Hacker News، برخی کاربران به شباهت زیاد برخی سیستمکالها (مانند read در برابر readv یا fork در برابر vfork) اشاره کرده و این پرسش را مطرح کردند که آیا دستهبندی آنها به عنوان موارد کاملاً مجزا همچنان منطقی است یا خیر که این موضوع چالشهای تاریخی تکامل کرنل لینوکس را نشان میدهد.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل