Changes between Version 2 and Version 3 of kernel_context


Ignore:
Timestamp:
Oct 20, 2014, 8:54:19 PM (10 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • kernel_context

    v2 v3  
    1 = GIET-VM / Task context access functions =
     1= GIET-VM / Context Switch Handler =
    22
    33[[PageOutline]]
    44
    5 The [source:soft/giet_vm/giet_common/utils.c utils.c] and [source:soft/giet_vm/giet_common/utils.h util.h] files define the functions used to access task contexts.
     5The [source:soft/giet_vm/giet_kernel/ctx_handler.c ctx_handler.c] and [source:soft/giet_vm/giet_kernel/ctx_handler.h ctx_handler.h] files define the data structure and functions used to handle context switching. They are prefixed by "_" to remind that they can only be executed by a processor in kernel mode.
    66
    7 They are prefixed by "_" to remind that they can only be executed by a processor in kernel mode.
     7A task context is an array of 64 words = 256 bytes.
     8It contains copies of processor registers (when the task is preempted):
     9 * GPR[i] : generally stored in slot (i). $0, $26 & $27 are not saved.
     10 * HI & LO registers : used by multiply/divide instructions.
     11 * CP0 registers : EPC, SR, CR, BVAR
     12 * CP2 registers : PTPR
     13It contains some general informations associated to the task:
     14 * TTY    : TTY channel global index
     15 * NIC    : NIC channel global index
     16 * CMA    : CMA channel global index
     17 * HBA    : HBA channel global index
     18 * DMA    : DMA channel local index
     19 * TIM    : TIM channel local index
     20 * PTAB   : page table virtual base address
     21 * LTID   : Task local index (in scheduler)
     22 * VSID   : Virtual space index
     23 * RUN    : Task state (0 => sleeping / 1 => runnable )
     24 * TRDID  : Thread ID index (in vspace)
     25
     26|| [0] ***   || [8]   $8    || [16] $16   || [24] $24  || [32] EPC   || [40] TTY   || [48] TRDID ||
     27|| [1] $1    || [9]   $9    || [17] $17  || [25] $25  || [33] CR     || [41] DMA  || [49] ***      ||
     28|| [2] $2    || [10] $10  || [18] $18  || [26]  LO   || [34] SR      || [42] NIC   || [50] ***      ||
     29|| [3] $3    || [11] $11  || [19] $19  || [27]  HI    || [35] BVAR  || [43] TIM  || [51] ***      ||
     30|| [4] $4    || [12] $12  || [20] $20  || [28] $28  || [36] PTAB  || [44] HBA  || [52] ***      ||
     31|| [5] $5    || [13] $13  || [21] $21  || [29] SP     || [37] LTID  || [45] CMA || [53] ***      ||
     32|| [6] $6    || [14] $14  || [22] $22  || [30] $30  || [38] VSID  || [46] GTID || [54] ***      ||   
     33|| [7] $7    || [15] $15  || [23] $23  || [31] RA    | [39] PTPR   || [47] RUN  || [55] ***      ||
     34
     35
     36
     37
     38
     39
     40
     41
     42
    843
    944 === unsigned int _get_current_task_id( void ) ===