|  | /* | 
|  | * Copyright 2014, NICTA | 
|  | * | 
|  | * This software may be distributed and modified according to the terms of | 
|  | * the BSD 2-Clause license. Note that NO WARRANTY is provided. | 
|  | * See "LICENSE_BSD2.txt" for details. | 
|  | * | 
|  | * @TAG(NICTA_BSD) | 
|  | */ | 
|  |  | 
|  | #include <sel4debug/identity.h> | 
|  | #include "identity-internal.h" | 
|  | #include <stdlib.h> | 
|  |  | 
|  | static const char *id_str; | 
|  | static const char *(*id_fn)(void); | 
|  |  | 
|  | void debug_set_id(const char *s) | 
|  | { | 
|  | id_str = s; | 
|  | id_fn = NULL; | 
|  | } | 
|  |  | 
|  | void debug_set_id_fn(const char * (*fn)(void)) | 
|  | { | 
|  | id_fn = fn; | 
|  | id_str = NULL; | 
|  | } | 
|  |  | 
|  | /* Return the identity of the current thread using whatever information the | 
|  | * user previously told us. Note, this will return NULL if the user has not | 
|  | * initialised either source of thread ID. | 
|  | */ | 
|  | const char *debug_get_id(void) | 
|  | { | 
|  | if (id_fn != NULL) { | 
|  | return id_fn(); | 
|  | } else { | 
|  | return id_str; | 
|  | } | 
|  | } |