codice:
typedef struct tcb_t {   		       	/* thread control block */
        tid_t           tid;            	/* thread identifier */
        status_t        status; 		/* thread's status */
	struct state_t  *proc_state;		/* processor state */
} tcb_t;
Scusa non ho letto benissimo tutto il codice ma struct state_t è un tipo inesistente: tu hai dichiarato una struct e tramite typedef l'hai chiamata "state_t" ma non esiste il tipo struct state_t perché quando hai dichiarato quella struct hai scritto direttamente

tupedef struct{
...
...
} state_t;

quindi state_t è il tipo stuttura, non struct state_t.

modifca quindi quella riga in rosso con

codice:
state_t  *proc_state;
forse è per quello che ti dice che proc_state non è una struttura... l'hai dichiarata di un tipo che non esiste in realtà

Ovviamente fai caso anche ai consigli che ti hanno dato gli altri che non ho letto con attenzione (comunque gli operatori -> al posto di . credo siano necessari perché usi puntatori a struct)