xref: /xnu-11215.61.5/libkern/image4/dlxk.c (revision 4f1223e81cd707a65cc109d0b8ad6653699da3c4)
1*4f1223e8SApple OSS Distributions #include <libkern/libkern.h>
2*4f1223e8SApple OSS Distributions #include <libkern/section_keywords.h>
3*4f1223e8SApple OSS Distributions #include <libkern/image4/dlxk.h>
4*4f1223e8SApple OSS Distributions 
5*4f1223e8SApple OSS Distributions #pragma mark Module Globals
6*4f1223e8SApple OSS Distributions SECURITY_READ_ONLY_LATE(const image4_dlxk_interface_t *) _dlxk = NULL;
7*4f1223e8SApple OSS Distributions 
8*4f1223e8SApple OSS Distributions #pragma mark KPI
9*4f1223e8SApple OSS Distributions void
image4_dlxk_link(const image4_dlxk_interface_t * dlxk)10*4f1223e8SApple OSS Distributions image4_dlxk_link(const image4_dlxk_interface_t *dlxk)
11*4f1223e8SApple OSS Distributions {
12*4f1223e8SApple OSS Distributions 	if (_dlxk) {
13*4f1223e8SApple OSS Distributions 		panic("image4 dlxk interface already set");
14*4f1223e8SApple OSS Distributions 	}
15*4f1223e8SApple OSS Distributions 	_dlxk = dlxk;
16*4f1223e8SApple OSS Distributions }
17*4f1223e8SApple OSS Distributions 
18*4f1223e8SApple OSS Distributions const image4_dlxk_interface_t *
image4_dlxk_get(image4_struct_version_t v)19*4f1223e8SApple OSS Distributions image4_dlxk_get(image4_struct_version_t v)
20*4f1223e8SApple OSS Distributions {
21*4f1223e8SApple OSS Distributions 	if (v > _dlxk->dlxk_version) {
22*4f1223e8SApple OSS Distributions 		return NULL;
23*4f1223e8SApple OSS Distributions 	}
24*4f1223e8SApple OSS Distributions 	return _dlxk;
25*4f1223e8SApple OSS Distributions }
26