Linux operatsion tizimining ichki mexanizmlari orasida syscall (tizim chaqiruvlari) dasturchilar va xavfsizlik mutaxassislari uchun muhim ma'lumot manbai hisoblanadi. Yaqinda syscall.sh sayti va uning API-si kengaytirilgan holda yangilandi, bu esa turli arxitekturalar bo'yicha to'liq ro'yxat, tarixiy o'zgarishlar va chaqiriq konventsiyalarini bir joyda taqdim etadi.
Kontekst va loyiha maqsadi
Linux yadrosi har yili yangi versiyalar bilan takomillashadi, shu bilan birga yangi tizim chaqiruvlari qo'shiladi, ba'zilari esa eskirganligi sababli olib tashlanadi. Dasturchilar, kernel modullarini yozuvchilar va tahlilchilar uchun bu o'zgarishlarni kuzatish qiyin bo'lishi mumkin. syscall.sh loyihasi bu muammoni hal qilishga qaratilgan: har bir arxitektura uchun syscall jadvalini, ularning kirish raqamlari, argument tartibi va qaysi yadrolarda paydo bo'lganini JSON formatida taqdim etadi.
curl https://api.syscall.sh/v2/syscalls/x64/read
Arxitektura bo'yicha tafsilotlar
Sayt 23 xil arxitektura uchun alohida sahifalar yaratadi. Har bir sahifada quyidagi ma'lumotlar keltiriladi:
- Jadvalda mavjud bo'lgan syscall soni (masalan, x64 – 369, arm64 – 326).
- Har bir chaqiruvning
since (qachon kiritilgan) va removed_in (qachon olib tashlangan) versiyalari.
- Arxitektura maxsus calling convention – raqam (NR), argumentlar (ARG0‑ARG5) va natija (RETURN) registrlari.
Misol uchun, x64 arxitekturasida syscall instruktsiyasi rax registrida raqamni, rdi, rsi, rdx, r10, r8, r9 registrlarida argumentlarni qabul qiladi. ARM64 da esa svc #0 instruktsiyasi x8 registrida raqam, x0‑x5 registrlarida argumentlar.
API imkoniyatlari
Yangi API https://api.syscall.sh/v2/syscalls/{arch}/read shaklida ishlaydi, bu yerda {arch} – arxitektura kodi (x64, arm64, riscv64 va hokazo). API orqali foydalanuvchi:
- Belgilangan arxitektura uchun barcha chaqiruvlarni JSON formatida oladi.
- Yadrolar oralig'ida farqlarni (diff) ko'rish, qaysi chaqiruv qaysi versiyada qo'shilgan yoki olib tashlanganini aniqlash.
- Har bir chaqiruvning qisqa tavsifini (Linux man sahifalaridan olingan) va liburing tomonidan taqdim etilgan
io_uring tavsifini oladi.
Bu API avtomatlashtirilgan testlar, statik tahlil vositalari va dokumentatsiya generatorlari uchun juda foydali.
Texnik tahlil va sintez
Yangi ma'lumot bazasining eng katta afzalligi – to'liq tarixiy iz. Oldingi versiyalardagi syscall ro'yxatlari ko'pincha statik fayllarda saqlanadi va yangilanishi qo'lda amalga oshiriladi. syscall.sh generatori Linux yadrosi manba kodini (kernel source) skanerlash orqali har bir SYSCALL_DEFINE makrosini avtomatik ravishda aniqlaydi. Natijada:
- Ma'lumotlar har doim kernel source bilan sinxron bo'ladi.
- Yangi versiya chiqishi bilan ma'lumot bazasi avtomatik yangilanadi.
- Har bir chaqiruvning kirish instruktsiyasi va argument registrlari aniq ko'rsatiladi, bu esa assembler darajasida kod yozuvchilar uchun muhim.
Shuningdek, saytda removed (olib tashlangan) chaqiruvlar ham ko'rsatiladi, lekin ular “all, with removed” filtrida ko'rinadi. Bu xususiyat eski kod bazalarini migratsiya qilishda, deprecated funksiyalarni aniqlashda yordam beradi.
Raqobatchilar bilan taqqoslash
Linux man sahifalari, syscalls(2) kabi standart hujjatlar ham syscall ro'yxatini beradi, lekin ular odatda bir versiya uchun cheklangan va argument tartibi haqida batafsil ma'lumot bermaydi. Boshqa onlayn manbalar (masalan, man7.org) ham statik bo'lib, arxitektura farqlarini ko'rsatmaydi.
Shu bilan birga, syscall.sh bir nechta afzalliklarni taklif etadi:
- Arxitektura bo'yicha alohida JSON fayllar (
/x64/syscalls.json, /arm64/syscalls.json va hokazo).
- API orqali dinamik so'rovlar, bu esa CI/CD pipeline'larda avtomatik tekshiruvlar uchun qulay.
- Har bir chaqiruvning since va removed_in atributlari, ya'ni versiya tarixini ko'rsatadi.
Bu jihatlar syscall.sh ni kernel dasturlash, xavfsizlik auditlari va akademik tadqiqotlar uchun eng ishonchli manbalardan biriga aylantiradi.
Cheklovlar va ochiq savollar
Yangi platforma juda boy ma'lumotga ega bo'lsa-da, ba'zi cheklovlar mavjud:
- Qo'shimcha meta‑ma'lumot – masalan, chaqiruvning xavfsizlik darajasi (privileged vs. unprivileged) yoki foydalanuvchi darajasiga bog'liq tavsiflar hali kiritilmagan.
- Yadrolar orasidagi farqlar – ba'zi arxitekturalarda bir xil chaqiruv turli raqamlar bilan ishlashi mumkin, lekin bu holat JSON fayllarida alohida ko'rsatilmaydi.
- API limitlari – hozirgi versiyada so'rov tezligi yoki autentifikatsiya mexanizmlari yo'q, bu katta hajmdagi avtomatlashtirilgan tahlil uchun muammo bo'lishi mumkin.
Kelajakda syscall.sh quyidagi yo'nalishlarda rivojlanishi kutiladi: xavfsizlik belgilari, foydalanuvchi darajasi filtratsiyasi, va GraphQL kabi yanada moslashuvchan API interfeysi.
Kimga va qanday ta'sir qiladi
Ushbu ma'lumot bazasi bir necha guruh foydalanuvchilar uchun foydali:
- Dasturchilar – kernel modullari, low‑level kutubxonalar yoki container runtime'larni yaratishda aniq chaqiruv raqamlarini va argument tartibini bilishlari kerak.
- Xavfsizlik mutaxassislari – eskirgan yoki olib tashlangan chaqiruvlarni aniqlash orqali exploit vektorlarini kamaytirishlari mumkin.
- Akademik tadqiqotchilar – Linux yadrosi evolyutsiyasini tarixiy nuqtai nazardan o'rganish, yangi arxitekturalarning qo'shilishi va eski arxitekturalarning yo'qolishini tahlil qilish.
- CI/CD tizimlari – avtomatik test skriptlari orqali ma'lum bir versiyada mavjud bo'lmagan chaqiruvlarni aniqlash, kodni moslashtirish.
Umuman olganda, syscall.sh ning yangilanishi Linux ekotizimida yanada aniq, avtomatlashtirilgan va tarixiy ma'lumotga asoslangan qarorlar qabul qilishni ta'minlaydi.
Xulosa
Linux tizim chaqiriqlari ma'lumot bazasining kengaytirilgan versiyasi arxitektura bo'yicha to'liq ro'yxat, tarixiy kontekst va qulay API ni birlashtiradi. Bu nafaqat dasturchilar, balki xavfsizlik mutaxassislari va tadqiqotchilar uchun ham mustahkam asbob bo'lib, Linux yadrosi ichki mexanizmlarini chuqurroq tushunishga yordam beradi. Kelajakda qo'shimcha meta‑ma'lumotlar va API optimallashtirishlari kutilayotgan bo'lsa, hozirgi holatda ham platforma texnik jamoalar uchun qimmatli resurs hisoblanadi.
Asl manba: syscall.sh