Rev 2283 | Rev 2307 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2283 | Rev 2292 | ||
---|---|---|---|
Line 50... | Line 50... | ||
50 | waitq_initialize(&wq); |
50 | waitq_initialize(&wq); |
51 | 51 | ||
52 | tasklet_descriptor_t *tasklet_desc; |
52 | tasklet_descriptor_t *tasklet_desc; |
53 | //before we start we need to register a tasklet |
53 | //before we start we need to register a tasklet |
54 | if (!gquiet) |
54 | if (!gquiet) |
55 | printf("Registering tasklet..."); |
55 | printf("cpu:%d, Registering tasklet...", CPU->id); |
56 | if (!gquiet) |
56 | if (!gquiet) |
57 | tasklet_desc=tasklet_register(&func, "\nTasklet called and received data from second thread\n"); |
57 | tasklet_desc=tasklet_register(&func, "\nTasklet called and received data\n"); |
58 | else |
58 | else |
59 | tasklet_desc=tasklet_register(&func, ""); |
59 | tasklet_desc=tasklet_register(&func, ""); |
60 | if (!gquiet) |
60 | if (!gquiet) |
61 | printf("Done!\n"); |
61 | printf("Done!\n"); |
62 | 62 | ||
63 | //first we'll try disabling the tasklet |
63 | //first we'll try disabling the tasklet |
64 | if (!gquiet) |
64 | if (!gquiet) |
65 | printf("Disabling tasklet..."); |
65 | printf("cpu:%d, Disabling tasklet...", CPU->id); |
66 | tasklet_disable(tasklet_desc); |
66 | tasklet_disable(tasklet_desc); |
67 | if (!gquiet) |
67 | if (!gquiet) |
68 | printf("Done!\n"); |
68 | printf("Done!\n"); |
69 | 69 | ||
70 | //we'll schedule the disabled tasklet |
70 | //we'll schedule the disabled tasklet |
71 | if (!gquiet) |
71 | if (!gquiet) |
72 | printf("Scheduling tasklet..."); |
72 | printf("cpu:%d, Scheduling tasklet...", CPU->id); |
73 | tasklet_schedule(tasklet_desc); |
73 | tasklet_schedule(tasklet_desc); |
74 | if (!gquiet) |
74 | if (!gquiet) |
75 | printf("Done!\n"); |
75 | printf("Done!\n"); |
76 | 76 | ||
77 | //and we'll wait if it gets called. It shouldn't however, because it's disabled |
77 | //and we'll wait if it gets called. It shouldn't however, because it's disabled |
78 | if (!gquiet) |
78 | if (!gquiet) |
79 | printf("Waiting 1s...\n"); |
79 | printf("cpu:%d, Waiting 1s...\n", CPU->id); |
80 | waitq_sleep_timeout(&wq,(uint32_t) 1000000,0); |
80 | waitq_sleep_timeout(&wq,(uint32_t) 1000000,0); |
81 | if (!gquiet) |
81 | if (!gquiet) |
82 | printf("Done!\n"); |
82 | printf("cpu:%d, Done!\n", CPU->id); |
83 | 83 | ||
84 | //then we'll try to enable it |
84 | //then we'll try to enable it |
85 | if (!gquiet) |
85 | if (!gquiet) |
86 | printf("Enabling tasklet..."); |
86 | printf("cpu:%d, Enabling tasklet...", CPU->id); |
87 | tasklet_enable(tasklet_desc); |
87 | tasklet_enable(tasklet_desc); |
88 | if (!gquiet) |
88 | if (!gquiet) |
89 | printf("Done!\n"); |
89 | printf("Done!\n"); |
90 | 90 | ||
91 | //and wait if it gets called this time. It should because it's enabled |
91 | //and wait if it gets called this time. It should because it's enabled |
92 | if (!gquiet) |
92 | if (!gquiet) |
93 | printf("Waiting 1s...\n"); |
93 | printf("cpu:%d, Waiting 1s...\n", CPU->id); |
94 | waitq_sleep_timeout(&wq,(uint32_t) 1000000,0); |
94 | waitq_sleep_timeout(&wq,(uint32_t) 1000000,0); |
95 | if (!gquiet) |
95 | if (!gquiet) |
96 | printf("Done!\n"); |
96 | printf("cpu:%d, Done!\n", CPU->id); |
97 | 97 | ||
98 | //finally we'll free the tasklet structure |
98 | //finally we'll free the tasklet structure |
99 | if (!gquiet) |
99 | if (!gquiet) |
100 | printf("Freeing..."); |
100 | printf("cpu:%d, Freeing...", CPU->id); |
101 | tasklet_free(tasklet_desc); |
101 | tasklet_free(tasklet_desc); |
102 | if (!gquiet) |
102 | if (!gquiet) |
103 | printf("Done!\n"); |
103 | printf("Done!\n"); |
104 | } |
104 | } |
105 | 105 | ||
Line 107... | Line 107... | ||
107 | { |
107 | { |
108 | gquiet = quiet; |
108 | gquiet = quiet; |
109 | waitq_t wq; |
109 | waitq_t wq; |
110 | waitq_initialize(&wq); |
110 | waitq_initialize(&wq); |
111 | tasklet_descriptor_t *tasklet_desc; |
111 | tasklet_descriptor_t *tasklet_desc; |
112 | thread_t* second_thread; |
112 | thread_t* second_thread = NULL; |
113 | #ifdef CONFIG_SMP |
113 | #ifdef CONFIG_SMP |
- | 114 | if (!quiet) |
|
- | 115 | printf("cpus:%d\n", config.cpu_active); |
|
- | 116 | ||
114 | if (config.cpu_active >1) { |
117 | if (config.cpu_active >1) { |
115 | second_thread = thread_create(&running_tasklet, NULL, TASK, THREAD_FLAG_WIRED,"running tasklet", false); |
118 | second_thread = thread_create(&running_tasklet, NULL, TASK, THREAD_FLAG_WIRED,"running tasklet", false); |
116 | if (CPU->id == 0) |
119 | if (CPU->id == 0) |
117 | second_thread->cpu = &cpus[1]; |
120 | second_thread->cpu = &cpus[1]; |
118 | else |
121 | else |
Line 121... | Line 124... | ||
121 | } |
124 | } |
122 | #endif |
125 | #endif |
123 | 126 | ||
124 | //before we start we need to register a tasklet |
127 | //before we start we need to register a tasklet |
125 | if (!quiet) |
128 | if (!quiet) |
126 | printf("Registering tasklet..."); |
129 | printf("cpu:%d, Registering tasklet...", CPU->id); |
127 | if (!quiet) |
130 | if (!quiet) |
128 | tasklet_desc=tasklet_register(&func, "\nTasklet called and received data\n"); |
131 | tasklet_desc=tasklet_register(&func, "\nTasklet called and received data\n"); |
129 | else |
132 | else |
130 | tasklet_desc=tasklet_register(&func, ""); |
133 | tasklet_desc=tasklet_register(&func, ""); |
131 | if (!quiet) |
134 | if (!quiet) |
132 | printf("Done!\n"); |
135 | printf("Done!\n"); |
133 | 136 | ||
134 | //first we'll try disabling the tasklet |
137 | //first we'll try disabling the tasklet |
135 | if (!quiet) |
138 | if (!quiet) |
136 | printf("Disabling tasklet..."); |
139 | printf("cpu:%d, Disabling tasklet...", CPU->id); |
137 | tasklet_disable(tasklet_desc); |
140 | tasklet_disable(tasklet_desc); |
138 | if (!quiet) |
141 | if (!quiet) |
139 | printf("Done!\n"); |
142 | printf("Done!\n"); |
140 | 143 | ||
141 | //we'll schedule the disabled tasklet |
144 | //we'll schedule the disabled tasklet |
142 | if (!quiet) |
145 | if (!quiet) |
143 | printf("Scheduling tasklet..."); |
146 | printf("cpu:%d, Scheduling tasklet...", CPU->id); |
144 | tasklet_schedule(tasklet_desc); |
147 | tasklet_schedule(tasklet_desc); |
145 | if (!quiet) |
148 | if (!quiet) |
146 | printf("Done!\n"); |
149 | printf("Done!\n"); |
147 | 150 | ||
148 | //and we'll wait if it gets called. It shouldn't however, because it's disabled |
151 | //and we'll wait if it gets called. It shouldn't however, because it's disabled |
149 | if (!quiet) |
152 | if (!quiet) |
150 | printf("Waiting 1s...\n"); |
153 | printf("cpu:%d, Waiting 1s...\n", CPU->id); |
151 | waitq_sleep_timeout(&wq,(uint32_t) 1000000,0); |
154 | waitq_sleep_timeout(&wq,(uint32_t) 1000000,0); |
152 | if (!quiet) |
155 | if (!quiet) |
153 | printf("Done!\n"); |
156 | printf("cpu:%d, Done!\n", CPU->id); |
- | 157 | ||
154 | 158 | ||
155 | //then we'll try to enable it |
159 | //then we'll try to enable it |
156 | if (!quiet) |
160 | if (!quiet) |
157 | printf("Enabling tasklet..."); |
161 | printf("cpu:%d, Enabling tasklet...", CPU->id); |
158 | tasklet_enable(tasklet_desc); |
162 | tasklet_enable(tasklet_desc); |
159 | if (!quiet) |
163 | if (!quiet) |
160 | printf("Done!\n"); |
164 | printf("Done!\n"); |
161 | 165 | ||
162 | //and wait if it gets called this time. It should because it's enabled |
166 | //and wait if it gets called this time. It should because it's enabled |
163 | if (!quiet) |
167 | if (!quiet) |
164 | printf("Waiting 1s...\n"); |
168 | printf("cpu:%d, Waiting 1s...\n", CPU->id); |
165 | waitq_sleep_timeout(&wq,(uint32_t) 1000000,0); |
169 | waitq_sleep_timeout(&wq,(uint32_t) 1000000,0); |
166 | if (!quiet) |
170 | if (!quiet) |
- | 171 | printf("cpu:%d, Done!\n", CPU->id); |
|
- | 172 | #ifdef CONFIG_SMP |
|
- | 173 | if (config.cpu_active >1) { |
|
- | 174 | printf("Joining with the second thread..."); |
|
- | 175 | thread_join(second_thread); |
|
167 | printf("Done!\n"); |
176 | printf("Done\n"); |
- | 177 | } |
|
168 | 178 | ||
- | 179 | #endif |
|
169 | //finally we'll free the tasklet structure |
180 | //finally we'll free the tasklet structure |
170 | if (!quiet) |
181 | if (!quiet) |
171 | printf("Freeing..."); |
182 | printf("cpu:%d, Freeing...", CPU->id); |
172 | tasklet_free(tasklet_desc); |
183 | tasklet_free(tasklet_desc); |
173 | if (!quiet) |
184 | if (!quiet) |
174 | printf("Done!\n"); |
185 | printf("Done!\n"); |
175 | 186 | ||
176 | 187 |