Bug Summary

File:/home/joel/rtems-4.11-work/build/rtems/c/src/../../cpukit/score/src/threadstackallocate.c
Location:line 50, column 10
Description:Value stored to 'the_stack_size' during its initialization is never read

Annotated Source Code

1/*
2 * Thread Handler
3 *
4 *
5 * COPYRIGHT (c) 1989-2008.
6 * On-Line Applications Research Corporation (OAR).
7 *
8 * The license and distribution terms for this file may be
9 * found in found in the file LICENSE in this distribution or at
10 * http://www.rtems.com/license/LICENSE.
11 *
12 * $Id: threadstackallocate.c,v 1.12 2008/12/15 19:21:01 joel Exp $
13 */
14
15#if HAVE_CONFIG_H1
16#include "config.h"
17#endif
18
19#include <rtems/system.h>
20#include <rtems/score/apiext.h>
21#include <rtems/score/context.h>
22#include <rtems/score/interr.h>
23#include <rtems/score/isr.h>
24#include <rtems/score/object.h>
25#include <rtems/score/priority.h>
26#include <rtems/score/states.h>
27#include <rtems/score/sysstate.h>
28#include <rtems/score/thread.h>
29#include <rtems/score/threadq.h>
30#include <rtems/score/userext.h>
31#include <rtems/score/wkspace.h>
32#include <rtems/config.h>
33
34/*PAGE
35 *
36 * _Thread_Stack_Allocate
37 *
38 * Allocate the requested stack space for the thread.
39 * return the actual size allocated after any adjustment
40 * or return zero if the allocation failed.
41 * Set the Start.stack field to the address of the stack
42 */
43
44size_t _Thread_Stack_Allocate(
45 Thread_Control *the_thread,
46 size_t stack_size
47)
48{
49 void *stack_addr = 0;
50 size_t the_stack_size = stack_size;
Value stored to 'the_stack_size' during its initialization is never read
51
52 the_stack_size = _Stack_Ensure_minimum( stack_size );
53
54 /*
55 * Call ONLY the CPU table stack allocate hook, _or_ the
56 * the RTEMS workspace allocate. This is so the stack free
57 * routine can call the correct deallocation routine.
58 */
59
60 if ( Configuration.stack_allocate_hook ) {
61 stack_addr = (*Configuration.stack_allocate_hook)( the_stack_size );
62 } else {
63
64 /*
65 * First pad the requested size so we allocate enough memory
66 * so the context initialization can align it properly. The address
67 * returned the workspace allocate must be directly stored in the
68 * stack control block because it is later used in the free sequence.
69 *
70 * Thus it is the responsibility of the CPU dependent code to
71 * get and keep the stack adjust factor, the stack alignment, and
72 * the context initialization sequence in sync.
73 */
74
75 the_stack_size = _Stack_Adjust_size( the_stack_size );
76 stack_addr = _Workspace_Allocate( the_stack_size );
77 }
78
79 if ( !stack_addr )
80 the_stack_size = 0;
81
82 the_thread->Start.stack = stack_addr;
83
84 return the_stack_size;
85}