Changeset 0366d09d in mainline for kernel/generic/src/proc/thread.c
- Timestamp:
- 2023-02-07T16:49:43Z (21 months ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 78acbc72
- Parents:
- 1eaead4
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2022-08-14 14:08:42)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2023-02-07 16:49:43)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/proc/thread.c
r1eaead4 r0366d09d 102 102 static slab_cache_t *thread_cache; 103 103 104 #ifdef CONFIG_FPU105 slab_cache_t *fpu_context_cache;106 #endif107 108 104 static void *threads_getkey(odlink_t *); 109 105 static int threads_cmp(void *, void *); … … 164 160 /* call the architecture-specific part of the constructor */ 165 161 thr_constructor_arch(thread); 166 167 #ifdef CONFIG_FPU168 thread->saved_fpu_context = slab_alloc(fpu_context_cache,169 FRAME_ATOMIC | kmflags);170 if (!thread->saved_fpu_context)171 return ENOMEM;172 #endif /* CONFIG_FPU */173 162 174 163 /* … … 198 187 uintptr_t stack_phys = 199 188 frame_alloc(STACK_FRAMES, kmflags, STACK_SIZE - 1); 200 if (!stack_phys) { 201 #ifdef CONFIG_FPU 202 assert(thread->saved_fpu_context); 203 slab_free(fpu_context_cache, thread->saved_fpu_context); 204 #endif 189 if (!stack_phys) 205 190 return ENOMEM; 206 }207 191 208 192 thread->kstack = (uint8_t *) PA2KA(stack_phys); … … 225 209 frame_free(KA2PA(thread->kstack), STACK_FRAMES); 226 210 227 #ifdef CONFIG_FPU228 assert(thread->saved_fpu_context);229 slab_free(fpu_context_cache, thread->saved_fpu_context);230 #endif231 232 211 return STACK_FRAMES; /* number of frames freed */ 233 212 } … … 243 222 244 223 atomic_store(&nrdy, 0); 245 thread_cache = slab_cache_create("thread_t", sizeof(thread_t), 0,224 thread_cache = slab_cache_create("thread_t", sizeof(thread_t), _Alignof(thread_t), 246 225 thr_constructor, thr_destructor, 0); 247 248 #ifdef CONFIG_FPU249 fpu_context_cache = slab_cache_create("fpu_context_t",250 sizeof(fpu_context_t), FPU_CONTEXT_ALIGN, NULL, NULL, 0);251 #endif252 226 253 227 odict_initialize(&threads, threads_getkey, threads_cmp);
Note:
See TracChangeset
for help on using the changeset viewer.