সুতরাং আমি সম্প্রতি আবিষ্কার করেছি যে HLT
সিপিইউ বন্ধ করার জন্য একটি অপকোড আছে । কুল, দেখি কি হয়!
user@box:~$ cat > test.c
int main(void)
{
__asm__("HLT");
return 0;
}
user@box:~$ gcc -o test test.c
user@box:~$ ./test
Segmentation fault (core dumped)
user@box:~$
Duh! কি বিরক্তিকর.
দেখা যাচ্ছে HLT
একটি সুবিধাজনক নির্দেশনা, সুতরাং আসুন অন্য কিছু চেষ্টা করি।
user@box:~$ mkdir test; cd test
user@box:~/test$ cat > test.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
int init_module(void)
{
__asm__("hlt");
return 0;
}
void cleanup_module(void)
{
}
user@box:~/test$ echo obj-m += test.o > Makefile
user@box:~/test$ make -C /lib/modules/$(uname -r)/build modules M=$(pwd)
[...]
user@box:~/test$ sudo insmod test.ko
user@box:~/test$
কিছুই ঘটেনি! Boring!
এটি দেখা যাচ্ছে যে, HLT
সিপিইউ ... পরবর্তী বিঘ্নিত হওয়া অবধি বন্ধ করে দিয়েছে। দুর্দান্ত, সুতরাং বাধাগুলি অক্ষম করার চেষ্টা করি। CLI
মনে হচ্ছে এটি আমরা যা চাই তা করব।
user@box:~/test$ sudo rmmod test
user@box:~/test$ sed -i 's/hlt/cli; hlt/' test.c
user@box:~/test$ make -C /lib/modules/$(uname -r)/build modules M=$(pwd)
[...]
user@box:~/test$ sudo insmod test.ko
... এবং এই মুহুর্তে, ওএস আমার ইনপুটটিতে সাড়া দেওয়া বন্ধ করে দিয়েছে। আমি কার্সারটি সরানো বা আমার কীবোর্ড ব্যবহার করে কিছু টাইপ করতে পারিনি। বেশ হিমশীতল।
ব্যতীত এটি ছিল না। আমার জিইউআইয়ের প্যানেলে ঘড়িটি চলতে থাকে। জাহান্নাম, এমনকি সংগীত বাজতে থাকে। মনে হচ্ছিল কেবল আমার মাউস এবং আমার কীবোর্ড কাজ করা বন্ধ করে দিয়েছে। আমি বুঝতে পেরেছিলাম যে আমার (ইউএসবি) কীবোর্ডের আর কোনও পাওয়ার নেই, এমনকি আমার ক্যাপস লক এলইডিও কাজ করবে না।
তো, এখানে কী হয়েছে? আমার মনে হচ্ছে এমন এক জোড়া নির্দেশনা কেন কেবল "ইউএসবি" ডিভাইসটি সিস্টেমের "হ্যাঙ্গআপ" করা উচিত? কেন সব কিছু চালিয়ে যেতে থাকে? বোনাস হিসাবে: সিস্টেমটি হিমশীতল করতে আসলে আমাকে কী করতে হবে?
CLI
এটি চলমান সিপিইউতে কেবলমাত্র প্রযোজ্য, সুতরাং আপনার যদি একাধিক সিপিইউ থাকে তবে আপনাকে একে একে চালাতে হবে।CLI+HLT
সিপিইউর উপর নির্ভর না করে যে কোনও কিছু তার আনন্দের পথে চালিয়ে যেতে পারে