Sistem operasi ini dibuat selama penugasan kelas. Kode ini eksperimental dan sangat tidak teruji, tetapi harus berhasil.
OS menggunakan penjadwal round robin yang sangat sederhana dan melakukan sakelar konteks setiap siklus jam 262144. Perilaku ini dapat dikendalikan dengan mengatur OCR0A dan prescaler timer0. Anda tidak dapat menggunakan Timer0 di aplikasi Anda, ini secara eksklusif digunakan oleh penjadwal.
Cukup pasang file yang dimulai dengan os di proyek Anda. Edit os_config.h agar sesuai dengan kebutuhan Anda. Dari utama Anda, hubungi os_init() dan buat tugas Anda dengan os_task_add(task_func, task_data) . Untuk memulai penjadwal, hubungi os_run() . Perhatikan bahwa panggilan ini tidak pernah kembali, jadi kode berikutnya tidak akan dieksekusi.
Harap dicatat bahwa tugas saat ini mungkin tidak pernah berakhir dan harus diakhiri menggunakan os_current_task_kill() . Untuk mengakses void-pointer yang diberikan ke os_task_add , hubungi os_current_task_get_data() .
Tolong jangan mencoba menggunakan rekursi atau tumpukan panggilan dalam, karena Anda hanya memiliki tumpukan yang sangat terbatas. Anda tidak boleh menggunakan Timer0, karena digunakan untuk penjadwal! Jangan mencoba interupsi yang dapat ditolak saat menggunakan rutinitas layanan interupsi khusus!
Sistem operasi dapat dikonfigurasi pada waktu kompilasi menggunakan define-Macros berikut di os_config.h :
OS_STACK_SIZE mengontrol ukuran tumpukan untuk satu tugas.OS_TASK_COUNT mengontrol berapa banyak tugas yang dapat dibuat secara bersamaan. Hak Cipta 2020 Stephan Brunner
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus dimasukkan dalam semua salinan atau bagian substansial dari perangkat lunak.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu dan nonpringement. Dalam hal apa pun penulis atau pemegang hak cipta tidak akan bertanggung jawab atas klaim, kerusakan atau tanggung jawab lainnya, baik dalam tindakan kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam perangkat lunak.