fix dependency check logic cause config always disabled
[lunaix-os.git] / lunaix-os / LConfig
1 from datetime import datetime, date
2
3 from . import kernel, arch, hal
4
5 @native
6 def get_patch_seq():
7     today = date.today()
8     year = today.year
9     start_of_year = datetime(year, 1, 1).date()
10     seq_num = (today - start_of_year).days
11     
12     return "%d%d"%(year - 2000, seq_num)
13
14 @"Kernel Version"
15 @readonly
16 def lunaix_ver() -> str:
17     """
18     Lunaix kernel version
19     """
20     
21     return f"{arch.val} v0.0.{get_patch_seq()}"
22
23 @"Kernel Debug and Testing"
24 def debug_and_testing():
25     """
26     General settings for kernel debugging feature
27     """
28
29     @"Supress assertion"
30     def no_assert() -> bool:
31         """
32         Supress all assertion fail activity.
33         Note: Enable this is highly NOT recommended and would result system
34               extermly unstable
35         """
36
37         return False
38
39     @"Report on stalled thread"
40     def check_stall() -> bool:
41         """
42         Check and report on any thread that spend too much time in kernel.
43         """
44
45         return True
46         
47     @"Max kernel time allowance"
48     def stall_timeout() -> int:
49         """
50         Set the maximum time (in seconds) spent in kernel before considered
51         to be stalled.
52         """
53         require (check_stall)
54
55         return 10
56     
57     @"Max number of preemptions"
58     def stall_max_preempts() -> int:
59         """
60         Set the maximum number of preemptions that a task can take
61         before it is considered to be stucked in some loops.
62
63         Setting it to 0 disable this check
64         """
65         require (check_stall)
66
67         return 0
68