Compare commits
618 Commits
tools_r22
...
jb-mr2-cts
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d3f9e8155b | ||
![]() |
5d0ad38c72 | ||
![]() |
ca2c6f75a8 | ||
![]() |
592c07084b | ||
![]() |
b30f6eb026 | ||
![]() |
9e6104d54f | ||
![]() |
05292dd65b | ||
![]() |
cc7f0dc5a1 | ||
![]() |
738370d938 | ||
![]() |
262b7384e4 | ||
![]() |
389b5c1ee5 | ||
![]() |
ccaa0fa6e9 | ||
![]() |
7b4d77e400 | ||
![]() |
9b84824dfd | ||
![]() |
a69103ffe4 | ||
![]() |
1fe1137576 | ||
![]() |
309e107f01 | ||
![]() |
e919b116d3 | ||
![]() |
96449b3dc1 | ||
![]() |
b24b6e1419 | ||
![]() |
c01274c4aa | ||
![]() |
d02dd19d51 | ||
![]() |
267290b340 | ||
![]() |
887049e46b | ||
![]() |
da2c158645 | ||
![]() |
8a6abe380d | ||
![]() |
999dff0ef3 | ||
![]() |
a850ad4cf4 | ||
![]() |
369f92349f | ||
![]() |
c82b339a7d | ||
![]() |
9386a33ea0 | ||
![]() |
3c1504d9d7 | ||
![]() |
93f3811b74 | ||
![]() |
0c973d7049 | ||
![]() |
ba61bb55c4 | ||
![]() |
a3fe475c9f | ||
![]() |
e0e5b2f6e7 | ||
![]() |
65163750b1 | ||
![]() |
b826ebf41e | ||
![]() |
85598626f4 | ||
![]() |
b44f9600a3 | ||
![]() |
a0dcecc53e | ||
![]() |
b80a05fa67 | ||
![]() |
bc0d7f736c | ||
![]() |
d74a0ffba8 | ||
![]() |
ddda044a81 | ||
![]() |
5686bb3003 | ||
![]() |
c8ded7c6b1 | ||
![]() |
a316725740 | ||
![]() |
1e40ace49e | ||
![]() |
17a0d1915f | ||
![]() |
a596aa6abf | ||
![]() |
01c0e19e42 | ||
![]() |
3077d88347 | ||
![]() |
c48968d268 | ||
![]() |
5c9a25cc23 | ||
![]() |
f977d2dc1d | ||
![]() |
c9edc07977 | ||
![]() |
39e2a408a6 | ||
![]() |
f46e14544b | ||
![]() |
9088af19b4 | ||
![]() |
d7dc414afd | ||
![]() |
987fc5a3c4 | ||
![]() |
12ea800566 | ||
![]() |
5f8292050f | ||
![]() |
e1b0db1392 | ||
![]() |
50d42294bd | ||
![]() |
9ede4549fe | ||
![]() |
f8d689bc56 | ||
![]() |
f85fc022f5 | ||
![]() |
f694ed1cdb | ||
![]() |
c9358706c6 | ||
![]() |
2e7b8d6399 | ||
![]() |
f557e90b34 | ||
![]() |
2f44c05bc5 | ||
![]() |
b0b974c10c | ||
![]() |
2a66ccf1bb | ||
![]() |
b4d6f28cc3 | ||
![]() |
a3214c6562 | ||
![]() |
746f128602 | ||
![]() |
5d998b4a21 | ||
![]() |
e9cdce33f3 | ||
![]() |
3c9afb5e17 | ||
![]() |
8c73f69cf4 | ||
![]() |
36cb88b70c | ||
![]() |
a60f381814 | ||
![]() |
b2525ba8a0 | ||
![]() |
7915b22e8f | ||
![]() |
60ac09bdb2 | ||
![]() |
a4b20d712b | ||
![]() |
b8e1033c5b | ||
![]() |
e5412a9a95 | ||
![]() |
bf32ffcf02 | ||
![]() |
6d6f5e618e | ||
![]() |
0b765862e1 | ||
![]() |
8a01572272 | ||
![]() |
4706606c88 | ||
![]() |
0a2ee4750a | ||
![]() |
ad7c275e45 | ||
![]() |
c7b9f954a5 | ||
![]() |
91392116ff | ||
![]() |
9c0c056bed | ||
![]() |
6b1aa1b16b | ||
![]() |
bac72abae4 | ||
![]() |
50a2cd865e | ||
![]() |
2527a8b5a6 | ||
![]() |
9043202b5b | ||
![]() |
c1a5d20d08 | ||
![]() |
9a0b658c9c | ||
![]() |
8c65a1e466 | ||
![]() |
a2517de384 | ||
![]() |
97a8217ae1 | ||
![]() |
3f7b1cd3ac | ||
![]() |
6ad68558ed | ||
![]() |
e5e6e17c5b | ||
![]() |
c96ad9bcd2 | ||
![]() |
7b69ac535a | ||
![]() |
81e0f35acc | ||
![]() |
2125c15506 | ||
![]() |
29cc4946ac | ||
![]() |
947b3ab02b | ||
![]() |
b9ef7f4e12 | ||
![]() |
ae280bcdbe | ||
![]() |
04190c53e3 | ||
![]() |
52b3aed798 | ||
![]() |
55fc93a909 | ||
![]() |
cc64677342 | ||
![]() |
7c83a1ed81 | ||
![]() |
04766565d3 | ||
![]() |
9c102ccf95 | ||
![]() |
30f1622a34 | ||
![]() |
82f4cc5de4 | ||
![]() |
aa13eaa934 | ||
![]() |
d9cb69881a | ||
![]() |
92ce5cc4bc | ||
![]() |
ed1068c86e | ||
![]() |
726642cfa5 | ||
![]() |
dd8439141a | ||
![]() |
bcedca25d3 | ||
![]() |
41fb968c42 | ||
![]() |
5d36baee95 | ||
![]() |
bfe0640e41 | ||
![]() |
a6b24b7afb | ||
![]() |
7dfc6a3cd1 | ||
![]() |
e974e95160 | ||
![]() |
d470955eb5 | ||
![]() |
72e983d628 | ||
![]() |
448f1f08c2 | ||
![]() |
caeb0bf53c | ||
![]() |
55779c4316 | ||
![]() |
aa96db5ba0 | ||
![]() |
37d6d8e933 | ||
![]() |
44f8f7b86a | ||
![]() |
cae2173952 | ||
![]() |
77272874f8 | ||
![]() |
5593d50c72 | ||
![]() |
6f55284103 | ||
![]() |
82232f0e6b | ||
![]() |
4174337525 | ||
![]() |
6af19237b7 | ||
![]() |
15c401d4ac | ||
![]() |
56a007c157 | ||
![]() |
f93de61e7b | ||
![]() |
7331af73f2 | ||
![]() |
dfa1e59b7d | ||
![]() |
8561261b5e | ||
![]() |
2346559cb4 | ||
![]() |
4c897b692d | ||
![]() |
5ca3e4a349 | ||
![]() |
a7603ff87a | ||
![]() |
8ca1da6e71 | ||
![]() |
6aca0ce367 | ||
![]() |
2db16ea38e | ||
![]() |
32a2340067 | ||
![]() |
d41c26e2d8 | ||
![]() |
a244e4eb61 | ||
![]() |
761b344bff | ||
![]() |
bc35693e6b | ||
![]() |
d8ceaf5afa | ||
![]() |
dde1d876b1 | ||
![]() |
f4e258c22e | ||
![]() |
78715fca0b | ||
![]() |
ac480b422a | ||
![]() |
1bb43b02ad | ||
![]() |
191f880bdf | ||
![]() |
23731e841a | ||
![]() |
13478d856a | ||
![]() |
0f6882f43d | ||
![]() |
a2b8b833d2 | ||
![]() |
b940711587 | ||
![]() |
5bb4f54b4d | ||
![]() |
1b21249d5a | ||
![]() |
376bce0097 | ||
![]() |
c087b7a80f | ||
![]() |
63358ae068 | ||
![]() |
01cf1678e7 | ||
![]() |
5eef90699d | ||
![]() |
7d2bc92717 | ||
![]() |
8c372fc77e | ||
![]() |
dd698ec89a | ||
![]() |
389ebfa16f | ||
![]() |
a7d9b655e5 | ||
![]() |
c63e59039d | ||
![]() |
ffc807fdb6 | ||
![]() |
a3e0f95fba | ||
![]() |
001437e861 | ||
![]() |
5dc29e97a6 | ||
![]() |
4b9ed9e153 | ||
![]() |
1c3039301b | ||
![]() |
a9ebf6c951 | ||
![]() |
6dd470d4d0 | ||
![]() |
d418c2bd0a | ||
![]() |
303339e8d1 | ||
![]() |
d1f2fafb72 | ||
![]() |
b72952171b | ||
![]() |
54a2587446 | ||
![]() |
46b3f0bb97 | ||
![]() |
9cdd76954d | ||
![]() |
96a5819afb | ||
![]() |
fb7a4850b8 | ||
![]() |
37247ae63c | ||
![]() |
322c7edba3 | ||
![]() |
3c72524611 | ||
![]() |
8db7a4cb20 | ||
![]() |
0243962d20 | ||
![]() |
4c59597089 | ||
![]() |
8dfe0daf6f | ||
![]() |
278c059663 | ||
![]() |
d9397a7c5e | ||
![]() |
a1b8c145cb | ||
![]() |
3638641014 | ||
![]() |
2a523d1a06 | ||
![]() |
62228694a0 | ||
![]() |
8482fbb691 | ||
![]() |
609ca692a9 | ||
![]() |
ac10757e2a | ||
![]() |
98ce9888b1 | ||
![]() |
85e76a3652 | ||
![]() |
3eaa03df03 | ||
![]() |
0f01df7fc9 | ||
![]() |
ddbb728eff | ||
![]() |
472fdc95a6 | ||
![]() |
f5b111df06 | ||
![]() |
d72183aa16 | ||
![]() |
828aaaac5e | ||
![]() |
9d28f5bf4a | ||
![]() |
28fa8e109e | ||
![]() |
7f0976ef0e | ||
![]() |
774cef56ee | ||
![]() |
bdd209561e | ||
![]() |
0b9b068b3f | ||
![]() |
f27874740f | ||
![]() |
0acf4069e9 | ||
![]() |
25e3f4a90d | ||
![]() |
8897a9565a | ||
![]() |
f669fdf11e | ||
![]() |
16f7b78fd1 | ||
![]() |
5f0de35c3e | ||
![]() |
1136b7d821 | ||
![]() |
b002a2ff77 | ||
![]() |
b1d1a7682f | ||
![]() |
f10c5a2215 | ||
![]() |
c82bc4f472 | ||
![]() |
f73a885f53 | ||
![]() |
bf1d225593 | ||
![]() |
c5c99adeed | ||
![]() |
e230306135 | ||
![]() |
dbcf3ed458 | ||
![]() |
89f9b30e4d | ||
![]() |
ff1c00a29e | ||
![]() |
927d904d52 | ||
![]() |
bcd18c0485 | ||
![]() |
dde6b88a9f | ||
![]() |
31ecd0c342 | ||
![]() |
b3aff045b2 | ||
![]() |
1a18895ebc | ||
![]() |
7cfe0d2602 | ||
![]() |
0112ee2190 | ||
![]() |
6405103a32 | ||
![]() |
9e22af2363 | ||
![]() |
86050b9e92 | ||
![]() |
a4e964d200 | ||
![]() |
7f7f232f4a | ||
![]() |
1165da8390 | ||
![]() |
32cefdbc7a | ||
![]() |
14ab1a63d6 | ||
![]() |
76c8c61517 | ||
![]() |
8ffe08c86b | ||
![]() |
f1464ff956 | ||
![]() |
0529a52c60 | ||
![]() |
8deebb34d3 | ||
![]() |
376889ad71 | ||
![]() |
73dd37d8fe | ||
![]() |
7e29f81163 | ||
![]() |
ef06105819 | ||
![]() |
d09bdc7148 | ||
![]() |
19dd1567a0 | ||
![]() |
0c11611c11 | ||
![]() |
78851f10d1 | ||
![]() |
8868be3a9f | ||
![]() |
5043c376c9 | ||
![]() |
76187899a6 | ||
![]() |
375e10f739 | ||
![]() |
326cb73c58 | ||
![]() |
00ab4eb0db | ||
![]() |
8dd63f31ba | ||
![]() |
27a7a5c138 | ||
![]() |
5c532dc8ee | ||
![]() |
e9d6575e10 | ||
![]() |
803bd660b6 | ||
![]() |
36a9f354c0 | ||
![]() |
0ce87c8984 | ||
![]() |
2937d9ab54 | ||
![]() |
d020802e37 | ||
![]() |
efe3ca7b48 | ||
![]() |
05ab167cf7 | ||
![]() |
b9cb7ee082 | ||
![]() |
78b90c744d | ||
![]() |
f096529317 | ||
![]() |
42d7a26d23 | ||
![]() |
d08e76cd35 | ||
![]() |
edb53b3e9d | ||
![]() |
a710682db3 | ||
![]() |
5e6213af54 | ||
![]() |
439bc8d540 | ||
![]() |
1c88362021 | ||
![]() |
c3d031ee91 | ||
![]() |
babe7e16a1 | ||
![]() |
49dd0409e0 | ||
![]() |
a03b2b075f | ||
![]() |
db11fdef1a | ||
![]() |
ae7af291e6 | ||
![]() |
59b8677562 | ||
![]() |
dcb8209409 | ||
![]() |
2e51dc444f | ||
![]() |
3fa99562ea | ||
![]() |
4ef6bc2e62 | ||
![]() |
4ad0910774 | ||
![]() |
e12a238d41 | ||
![]() |
e8be11969f | ||
![]() |
7492875448 | ||
![]() |
3b48de92c7 | ||
![]() |
80a161db5c | ||
![]() |
d8366eae3b | ||
![]() |
321b545ad9 | ||
![]() |
947f74dc95 | ||
![]() |
4867b00666 | ||
![]() |
03ff63cee0 | ||
![]() |
72f43a929f | ||
![]() |
c16ea16134 | ||
![]() |
8dd20fcd88 | ||
![]() |
3269d63772 | ||
![]() |
3a681c8db1 | ||
![]() |
aec9a254a2 | ||
![]() |
6f3222ea42 | ||
![]() |
5b3aa025f3 | ||
![]() |
da273a17e7 | ||
![]() |
02a6ca7ef5 | ||
![]() |
6aa473274c | ||
![]() |
b3dc5c60aa | ||
![]() |
aad391b8a6 | ||
![]() |
1233104f5e | ||
![]() |
dfaf06ac03 | ||
![]() |
930a507786 | ||
![]() |
2c9590664f | ||
![]() |
bace2c47d3 | ||
![]() |
d15c8737ce | ||
![]() |
d052eb6b47 | ||
![]() |
dc20297f8d | ||
![]() |
da71c7d9a3 | ||
![]() |
5793235ec4 | ||
![]() |
f1566fd692 | ||
![]() |
d752fc0286 | ||
![]() |
1d0129b1b2 | ||
![]() |
80bcf54766 | ||
![]() |
eb15e1d485 | ||
![]() |
ceda36fa12 | ||
![]() |
d781dfdb09 | ||
![]() |
02c3513e5f | ||
![]() |
00fe4a20d7 | ||
![]() |
7a6ae1d667 | ||
![]() |
e892414bd3 | ||
![]() |
a4242290a1 | ||
![]() |
b5b52e73e9 | ||
![]() |
a9b0cd68de | ||
![]() |
8478dbc85f | ||
![]() |
864d48917a | ||
![]() |
08c4e30e23 | ||
![]() |
4d2ea14288 | ||
![]() |
c7358ee57c | ||
![]() |
7d617d0db9 | ||
![]() |
5e805afa79 | ||
![]() |
d4834a217e | ||
![]() |
5ce5edd6cf | ||
![]() |
96b52e104a | ||
![]() |
5b006f3d08 | ||
![]() |
4e0b489a0c | ||
![]() |
a7bb83475b | ||
![]() |
0f96dd8dcb | ||
![]() |
2654447c0e | ||
![]() |
4cdc426207 | ||
![]() |
217e616772 | ||
![]() |
1d212fa6eb | ||
![]() |
1d8b87d2b4 | ||
![]() |
c866dc20bf | ||
![]() |
8b8cc88d39 | ||
![]() |
3135c87ca8 | ||
![]() |
9407c5c126 | ||
![]() |
1b62d4e72e | ||
![]() |
421083359e | ||
![]() |
933746ad7d | ||
![]() |
bde97cf154 | ||
![]() |
18ee86f892 | ||
![]() |
174b6d0e19 | ||
![]() |
a7bc708e0c | ||
![]() |
0f7814264c | ||
![]() |
c0e8400361 | ||
![]() |
c63dda22dd | ||
![]() |
9648b588b4 | ||
![]() |
f190a16e5e | ||
![]() |
9eaa953642 | ||
![]() |
826215bec2 | ||
![]() |
87f487f6ce | ||
![]() |
2734345095 | ||
![]() |
b2d2b30a13 | ||
![]() |
4089dea451 | ||
![]() |
66d71c8f13 | ||
![]() |
aff37491a1 | ||
![]() |
f0f052f28d | ||
![]() |
3622c73cfc | ||
![]() |
9ab8851756 | ||
![]() |
c41e2216f4 | ||
![]() |
5a16e92eb5 | ||
![]() |
ed0570bf0c | ||
![]() |
1cae8da8e7 | ||
![]() |
c34bdc957c | ||
![]() |
2d5d80985e | ||
![]() |
399f54c133 | ||
![]() |
ae554abd41 | ||
![]() |
f0a9cd7847 | ||
![]() |
6cdf8dd025 | ||
![]() |
4fbb1569f5 | ||
![]() |
95114ff5c5 | ||
![]() |
be02504f5f | ||
![]() |
b5d5173139 | ||
![]() |
b28c547aa4 | ||
![]() |
7f1464c03c | ||
![]() |
eab85a379d | ||
![]() |
04373fe6fe | ||
![]() |
4dc7206c94 | ||
![]() |
326e4037e9 | ||
![]() |
2e223d208f | ||
![]() |
4137d67cde | ||
![]() |
6a3d9af46e | ||
![]() |
100e313c75 | ||
![]() |
0a2d31838f | ||
![]() |
1be6e685a5 | ||
![]() |
0147bd2f78 | ||
![]() |
f680b0f404 | ||
![]() |
2fb6457efb | ||
![]() |
23042bab43 | ||
![]() |
a638642f44 | ||
![]() |
51d1a14c80 | ||
![]() |
0647355bef | ||
![]() |
25b3416960 | ||
![]() |
7c7609f95e | ||
![]() |
c08088376a | ||
![]() |
9f3c0d32a4 | ||
![]() |
2b83e0e67e | ||
![]() |
f9355bc5cd | ||
![]() |
e06f77dce0 | ||
![]() |
284de14ebb | ||
![]() |
dcc80e127c | ||
![]() |
73b5a72134 | ||
![]() |
5c5b720d81 | ||
![]() |
41bb2eb806 | ||
![]() |
7379f525be | ||
![]() |
0e4065e8c7 | ||
![]() |
62466a55bf | ||
![]() |
cd1fb029eb | ||
![]() |
07ab5cbbed | ||
![]() |
6a163a1bf1 | ||
![]() |
8631744c49 | ||
![]() |
4aebbf63c3 | ||
![]() |
ce061964f7 | ||
![]() |
9f7d6840da | ||
![]() |
9a78257905 | ||
![]() |
218c7f5dbe | ||
![]() |
b8ceb988ea | ||
![]() |
e290cd1606 | ||
![]() |
20599f5c9e | ||
![]() |
62fd0b699a | ||
![]() |
d203fba8f0 | ||
![]() |
b3cbcb3547 | ||
![]() |
b35a90d682 | ||
![]() |
593315c327 | ||
![]() |
f28d8d7042 | ||
![]() |
c99828169b | ||
![]() |
58deb845c5 | ||
![]() |
1c24c54840 | ||
![]() |
457e60a2f8 | ||
![]() |
bc30d0a798 | ||
![]() |
db18cbdd85 | ||
![]() |
ec0d2a86b7 | ||
![]() |
48468f258a | ||
![]() |
3ee5775a0f | ||
![]() |
6b08ed7937 | ||
![]() |
5f517ce256 | ||
![]() |
839ae785d8 | ||
![]() |
a4e3391db2 | ||
![]() |
6709aba126 | ||
![]() |
35c3408b0d | ||
![]() |
5fe555ecac | ||
![]() |
72758a138e | ||
![]() |
31abfc3a98 | ||
![]() |
230752b861 | ||
![]() |
e59f4c31cb | ||
![]() |
9416782be5 | ||
![]() |
97b9643c5b | ||
![]() |
c64bb00cdf | ||
![]() |
953de64819 | ||
![]() |
47cac977f5 | ||
![]() |
80921057d4 | ||
![]() |
5006660be8 | ||
![]() |
99696a9373 | ||
![]() |
995f8c925f | ||
![]() |
bbe3d3916f | ||
![]() |
b46a1d8890 | ||
![]() |
e2862bb984 | ||
![]() |
2bdfdfbf09 | ||
![]() |
3985fbb348 | ||
![]() |
3487c9b4a8 | ||
![]() |
98b62860cf | ||
![]() |
92042e8b91 | ||
![]() |
0b8770ccbd | ||
![]() |
6acc9d10e2 | ||
![]() |
4beae98ae0 | ||
![]() |
d03266b2b7 | ||
![]() |
758b1c46fb | ||
![]() |
230df050ed | ||
![]() |
1f6639a1bf | ||
![]() |
342e174b24 | ||
![]() |
cd6fd2f14d | ||
![]() |
4b027b381f | ||
![]() |
0a14d9f5c8 | ||
![]() |
4628d2f6bb | ||
![]() |
26145cfc18 | ||
![]() |
1d16b89289 | ||
![]() |
b8d2695c82 | ||
![]() |
0681b2e477 | ||
![]() |
c05ca5f058 | ||
![]() |
cc9f4d56c0 | ||
![]() |
422bb8b5c4 | ||
![]() |
ea4900b89a | ||
![]() |
8af9d9a7d0 | ||
![]() |
6bdc30e923 | ||
![]() |
a10b277de2 | ||
![]() |
0febe091a5 | ||
![]() |
d52075bd97 | ||
![]() |
50b4523380 | ||
![]() |
71c9a05614 | ||
![]() |
66c033868f | ||
![]() |
4a5ab7a191 | ||
![]() |
79f3698f39 | ||
![]() |
5dcf871abb | ||
![]() |
f574ce603a | ||
![]() |
259f4a1503 | ||
![]() |
dd8cd5d6bc | ||
![]() |
c97c5fc788 | ||
![]() |
6a80cc9e08 | ||
![]() |
d7a941f210 | ||
![]() |
4a20a7f77c | ||
![]() |
63c16f85c5 | ||
![]() |
c383a32926 | ||
![]() |
1bb1aea178 | ||
![]() |
c2817899e4 | ||
![]() |
75501a17f2 | ||
![]() |
b17cd156b5 | ||
![]() |
cb221a5cbe | ||
![]() |
444a2bf314 | ||
![]() |
f1e95d935f | ||
![]() |
1ab6f486de | ||
![]() |
a8e76ddf9e | ||
![]() |
40805076f9 | ||
![]() |
baa35efba8 | ||
![]() |
6dd6634bf6 | ||
![]() |
60ca41ebb7 | ||
![]() |
fa844eff32 | ||
![]() |
31096ceb79 | ||
![]() |
6f2e8f9878 | ||
![]() |
dec42d9112 | ||
![]() |
839c4f1eb6 | ||
![]() |
b11eaaed35 | ||
![]() |
15b3aef581 | ||
![]() |
031226a9fd | ||
![]() |
7478b0bfa6 | ||
![]() |
65f12237b8 | ||
![]() |
889a706637 | ||
![]() |
855a3779be | ||
![]() |
36c27b547e | ||
![]() |
967c9f7fcb | ||
![]() |
fccadc38bd | ||
![]() |
963a8fc036 | ||
![]() |
3a6e56534d | ||
![]() |
2a258c9f2d | ||
![]() |
543960121c | ||
![]() |
96ca71a7a6 | ||
![]() |
338d3fbc8b | ||
![]() |
0f004be596 | ||
![]() |
120e7fbeb9 | ||
![]() |
d8b46b7bc4 | ||
![]() |
a68c57ee5f | ||
![]() |
f40c69c259 | ||
![]() |
1e52e79b70 | ||
![]() |
aaba380787 | ||
![]() |
43ef6784df | ||
![]() |
d18f341398 | ||
![]() |
761ba27d62 |
@@ -238,7 +238,8 @@ libc_bionic_src_files := \
|
||||
bionic/brk.cpp \
|
||||
bionic/dirent.cpp \
|
||||
bionic/__errno.c \
|
||||
bionic/eventfd.cpp \
|
||||
bionic/eventfd_read.cpp \
|
||||
bionic/eventfd_write.cpp \
|
||||
bionic/__fgets_chk.cpp \
|
||||
bionic/getauxval.cpp \
|
||||
bionic/getcwd.cpp \
|
||||
@@ -763,6 +764,9 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||
LOCAL_WHOLE_STATIC_LIBRARIES := libbionic_ssp libc_bionic libc_freebsd libc_netbsd
|
||||
LOCAL_SYSTEM_SHARED_LIBRARIES :=
|
||||
|
||||
# TODO: split out the asflags.
|
||||
LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
|
||||
|
||||
|
@@ -1,13 +1,11 @@
|
||||
# this file is used to list all the syscalls that will be supported by
|
||||
# the Bionic C library. It is used to automatically generate the syscall
|
||||
# stubs, the list of syscall constants (__NR_xxxx) and the content of <linux/_unistd.h>
|
||||
# This file is used to automatically generate bionic's the system calls stubs.
|
||||
#
|
||||
# each non comment line has the following format:
|
||||
# Each non comment line has the following format:
|
||||
#
|
||||
# return_type func_name[:syscall_name[:call_id]]([parameter_list]) (syscall_number|"stub")
|
||||
# return_type func_name[:syscall_name[:call_id]]([parameter_list]) (1|-1|"stub")
|
||||
#
|
||||
# note that:
|
||||
# - syscall_name correspond to the name of the syscall, which may differ from
|
||||
# Note that:
|
||||
# - syscall_name corresponds to the name of the syscall, which may differ from
|
||||
# the exported function name (example: the exit syscall is implemented by the _exit()
|
||||
# function, which is not the same as the standard C exit() function which calls it)
|
||||
# The call_id parameter, given that func_name and syscall_name have
|
||||
@@ -18,302 +16,306 @@
|
||||
# - each parameter type is assumed to be stored on 32 bits, there is no plan to support
|
||||
# 64-bit architectures at the moment
|
||||
#
|
||||
# - it there is "stub" instead of a syscall number, the tool will not generate any
|
||||
# assembler template for the syscall; it's up to the bionic implementation to provide
|
||||
# a relevant C stub
|
||||
# - the final field can be "1", meaning: generate a stub for each architecture,
|
||||
# taking the constants from the kernel header files.
|
||||
#
|
||||
# - additionally, if the syscall number is different amoung ARM, and x86, MIPS use:
|
||||
# return_type funcname[:syscall_name](parameters) arm_number,x86_number,mips_number
|
||||
# - the final field can be "stub" meaning: do not generate any stubs ---
|
||||
# in this case, a hand-written custom stub must be provided.
|
||||
# TODO: replace this with something like "custom" or "none", or remove
|
||||
# it entirely.
|
||||
#
|
||||
# - the final field can be a three-element list of 1s and -1 meaning:
|
||||
# this system call is only available on some of the architectures (1),
|
||||
# and no stub should be generated for those architectures marked with -1.
|
||||
# the order is arm,x86,mips.
|
||||
# TODO: replace this with something more readable like "-arm,-mips" (meaning x86 only).
|
||||
#
|
||||
# This file is processed by a python script named gensyscalls.py.
|
||||
#
|
||||
# The checksyscalls.py script can check that the syscall numbers here are
|
||||
# correct by comparing them to the numbers in the Linux kernel headers.
|
||||
#
|
||||
|
||||
# process management
|
||||
void _exit:exit_group (int) 248,252,246
|
||||
void _exit:exit_group (int) 1
|
||||
void _exit_thread:exit (int) 1
|
||||
pid_t __fork:fork (void) 2
|
||||
pid_t _waitpid:waitpid (pid_t, int*, int, struct rusage*) -1,7,7
|
||||
int __waitid:waitid(int, pid_t, struct siginfo_t*, int,void*) 280,284,278
|
||||
pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage) 114
|
||||
pid_t __fork:fork (void) 1
|
||||
pid_t _waitpid:waitpid (pid_t, int*, int, struct rusage*) -1,1,1
|
||||
int __waitid:waitid(int, pid_t, struct siginfo_t*, int,void*) 1
|
||||
pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage) 1
|
||||
|
||||
# NOTE: this system call is never called directly, but we list it there
|
||||
# to have __NR_clone properly defined.
|
||||
#
|
||||
pid_t __sys_clone:clone (int, void*, int*, void*, int*) 120
|
||||
pid_t __sys_clone:clone (int, void*, int*, void*, int*) 1
|
||||
|
||||
int execve (const char*, char* const*, char* const*) 11
|
||||
int execve (const char*, char* const*, char* const*) 1
|
||||
|
||||
int __setuid:setuid32 (uid_t) 213,213,-1
|
||||
int __setuid:setuid (uid_t) -1,-1,23
|
||||
uid_t getuid:getuid32 () 199,199,-1
|
||||
uid_t getuid:getuid () -1,-1,24
|
||||
gid_t getgid:getgid32 () 200,200,-1
|
||||
gid_t getgid:getgid () -1,-1,47
|
||||
uid_t geteuid:geteuid32 () 201,201,-1
|
||||
uid_t geteuid:geteuid () -1,-1,49
|
||||
gid_t getegid:getegid32 () 202,202,-1
|
||||
gid_t getegid:getegid () -1,-1,50
|
||||
uid_t getresuid:getresuid32 (uid_t *ruid, uid_t *euid, uid_t *suid) 209,209,-1
|
||||
uid_t getresuid:getresuid (uid_t *ruid, uid_t *euid, uid_t *suid) -1,-1,186
|
||||
gid_t getresgid:getresgid32 (gid_t *rgid, gid_t *egid, gid_t *sgid) 211,211,-1
|
||||
gid_t getresgid:getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid) -1,-1,191
|
||||
pid_t gettid() 224,224,222
|
||||
ssize_t readahead(int, off64_t, size_t) 225,225,223
|
||||
int getgroups:getgroups32(int, gid_t *) 205,205,-1
|
||||
int getgroups:getgroups(int, gid_t *) -1,-1,80
|
||||
pid_t getpgid(pid_t) 132
|
||||
pid_t getppid() 64
|
||||
pid_t getsid(pid_t) 147,147,151
|
||||
pid_t setsid() 66
|
||||
int setgid:setgid32(gid_t) 214,214,-1
|
||||
int setgid:setgid(gid_t) -1,-1,46
|
||||
int __setuid:setuid32 (uid_t) 1,1,-1
|
||||
int __setuid:setuid (uid_t) -1,-1,1
|
||||
uid_t getuid:getuid32 () 1,1,-1
|
||||
uid_t getuid:getuid () -1,-1,1
|
||||
gid_t getgid:getgid32 () 1,1,-1
|
||||
gid_t getgid:getgid () -1,-1,1
|
||||
uid_t geteuid:geteuid32 () 1,1,-1
|
||||
uid_t geteuid:geteuid () -1,-1,1
|
||||
gid_t getegid:getegid32 () 1,1,-1
|
||||
gid_t getegid:getegid () -1,-1,1
|
||||
uid_t getresuid:getresuid32 (uid_t *ruid, uid_t *euid, uid_t *suid) 1,1,-1
|
||||
uid_t getresuid:getresuid (uid_t *ruid, uid_t *euid, uid_t *suid) -1,-1,1
|
||||
gid_t getresgid:getresgid32 (gid_t *rgid, gid_t *egid, gid_t *sgid) 1,1,-1
|
||||
gid_t getresgid:getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid) -1,-1,1
|
||||
pid_t gettid() 1
|
||||
ssize_t readahead(int, off64_t, size_t) 1
|
||||
int getgroups:getgroups32(int, gid_t *) 1,1,-1
|
||||
int getgroups:getgroups(int, gid_t *) -1,-1,1
|
||||
pid_t getpgid(pid_t) 1
|
||||
pid_t getppid() 1
|
||||
pid_t getsid(pid_t) 1
|
||||
pid_t setsid() 1
|
||||
int setgid:setgid32(gid_t) 1,1,-1
|
||||
int setgid:setgid(gid_t) -1,-1,1
|
||||
int seteuid:seteuid32(uid_t) stub
|
||||
int __setreuid:setreuid32(uid_t, uid_t) 203,203,-1
|
||||
int __setreuid:setreuid(uid_t, uid_t) -1,-1,70
|
||||
int __setresuid:setresuid32(uid_t, uid_t, uid_t) 208,208,-1
|
||||
int __setresuid:setresuid(uid_t, uid_t, uid_t) -1,-1,185
|
||||
int setresgid:setresgid32(gid_t, gid_t, gid_t) 210,210,-1
|
||||
int setresgid:setresgid(gid_t, gid_t, gid_t) -1,-1,190
|
||||
void* __brk:brk(void*) 45
|
||||
int __setreuid:setreuid32(uid_t, uid_t) 1,1,-1
|
||||
int __setreuid:setreuid(uid_t, uid_t) -1,-1,1
|
||||
int __setresuid:setresuid32(uid_t, uid_t, uid_t) 1,1,-1
|
||||
int __setresuid:setresuid(uid_t, uid_t, uid_t) -1,-1,1
|
||||
int setresgid:setresgid32(gid_t, gid_t, gid_t) 1,1,-1
|
||||
int setresgid:setresgid(gid_t, gid_t, gid_t) -1,-1,1
|
||||
void* __brk:brk(void*) 1
|
||||
# see comments in arch-arm/bionic/kill.S to understand why we don't generate an ARM stub for kill/tkill
|
||||
int kill(pid_t, int) -1,37,37
|
||||
int tkill(pid_t tid, int sig) -1,238,236
|
||||
int tgkill(pid_t tgid, pid_t tid, int sig) -1,270,266
|
||||
int __ptrace:ptrace(int request, int pid, void* addr, void* data) 26
|
||||
int __set_thread_area:set_thread_area(void* user_desc) -1,243,283
|
||||
int __getpriority:getpriority(int, int) 96
|
||||
int setpriority(int, int, int) 97
|
||||
int setrlimit(int resource, const struct rlimit *rlp) 75
|
||||
int getrlimit:ugetrlimit(int resource, struct rlimit *rlp) 191,191,-1
|
||||
int getrlimit:getrlimit(int resource, struct rlimit *rlp) -1,-1,76
|
||||
int getrusage(int who, struct rusage* r_usage) 77
|
||||
int setgroups:setgroups32(int, const gid_t *) 206,206,-1
|
||||
int setgroups:setgroups(int, const gid_t *) -1,-1,81
|
||||
int kill(pid_t, int) -1,1,1
|
||||
int tkill(pid_t tid, int sig) -1,1,1
|
||||
int tgkill(pid_t tgid, pid_t tid, int sig) -1,1,1
|
||||
int __ptrace:ptrace(int request, int pid, void* addr, void* data) 1
|
||||
int __set_thread_area:set_thread_area(void* user_desc) -1,1,1
|
||||
int __getpriority:getpriority(int, int) 1
|
||||
int setpriority(int, int, int) 1
|
||||
int setrlimit(int resource, const struct rlimit *rlp) 1
|
||||
int getrlimit:ugetrlimit(int resource, struct rlimit *rlp) 1,1,-1
|
||||
int getrlimit:getrlimit(int resource, struct rlimit *rlp) -1,-1,1
|
||||
int getrusage(int who, struct rusage* r_usage) 1
|
||||
int setgroups:setgroups32(int, const gid_t *) 1,1,-1
|
||||
int setgroups:setgroups(int, const gid_t *) -1,-1,1
|
||||
pid_t getpgrp(void) stub
|
||||
int setpgid(pid_t, pid_t) 57
|
||||
pid_t vfork(void) 190,-1,-1
|
||||
int setregid:setregid32(gid_t, gid_t) 204,204,-1
|
||||
int setregid:setregid(gid_t, gid_t) -1,-1,71
|
||||
int chroot(const char *) 61
|
||||
int setpgid(pid_t, pid_t) 1
|
||||
pid_t vfork(void) 1,-1,-1
|
||||
int setregid:setregid32(gid_t, gid_t) 1,1,-1
|
||||
int setregid:setregid(gid_t, gid_t) -1,-1,1
|
||||
int chroot(const char *) 1
|
||||
# IMPORTANT: Even though <sys/prctl.h> declares prctl(int,...), the syscall stub must take 6 arguments
|
||||
# to match the kernel implementation.
|
||||
int prctl(int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5) 172,172,192
|
||||
int capget(cap_user_header_t header, cap_user_data_t data) 184,184,204
|
||||
int capset(cap_user_header_t header, const cap_user_data_t data) 185,185,205
|
||||
int sigaltstack(const stack_t*, stack_t*) 186,186,206
|
||||
int acct(const char* filepath) 51
|
||||
int prctl(int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5) 1
|
||||
int capget(cap_user_header_t header, cap_user_data_t data) 1
|
||||
int capset(cap_user_header_t header, const cap_user_data_t data) 1
|
||||
int sigaltstack(const stack_t*, stack_t*) 1
|
||||
int acct(const char* filepath) 1
|
||||
|
||||
# file descriptors
|
||||
ssize_t read (int, void*, size_t) 3
|
||||
ssize_t write (int, const void*, size_t) 4
|
||||
ssize_t pread64 (int, void *, size_t, off64_t) 180,180,200
|
||||
ssize_t pwrite64 (int, void *, size_t, off64_t) 181,181,201
|
||||
int __open:open (const char*, int, mode_t) 5
|
||||
int __openat:openat (int, const char*, int, mode_t) 322,295,288
|
||||
int close (int) 6
|
||||
ssize_t read (int, void*, size_t) 1
|
||||
ssize_t write (int, const void*, size_t) 1
|
||||
ssize_t pread64 (int, void *, size_t, off64_t) 1
|
||||
ssize_t pwrite64 (int, void *, size_t, off64_t) 1
|
||||
int __open:open (const char*, int, mode_t) 1
|
||||
int __openat:openat (int, const char*, int, mode_t) 1
|
||||
int close (int) 1
|
||||
int creat(const char*, mode_t) stub
|
||||
off_t lseek(int, off_t, int) 19
|
||||
int __llseek:_llseek (int, unsigned long, unsigned long, loff_t*, int) 140
|
||||
pid_t getpid () 20
|
||||
off_t lseek(int, off_t, int) 1
|
||||
int __llseek:_llseek (int, unsigned long, unsigned long, loff_t*, int) 1
|
||||
pid_t getpid () 1
|
||||
void * mmap(void *, size_t, int, int, int, long) stub
|
||||
void * __mmap2:mmap2(void*, size_t, int, int, int, long) 192,192,210
|
||||
int munmap(void *, size_t) 91
|
||||
void * mremap(void *, size_t, size_t, unsigned long) 163,163,167
|
||||
int msync(const void *, size_t, int) 144
|
||||
int mprotect(const void *, size_t, int) 125
|
||||
int madvise(const void *, size_t, int) 220,219,218
|
||||
int mlock(const void *addr, size_t len) 150,150,154
|
||||
int munlock(const void *addr, size_t len) 151,151,155
|
||||
int mlockall(int flags) 152,152,156
|
||||
int munlockall() 153,153,157
|
||||
int mincore(void* start, size_t length, unsigned char* vec) 219,218,217
|
||||
int __ioctl:ioctl(int, int, void *) 54
|
||||
int readv(int, const struct iovec *, int) 145
|
||||
int writev(int, const struct iovec *, int) 146
|
||||
int __fcntl:fcntl(int, int, void*) 55
|
||||
int flock(int, int) 143
|
||||
int fchmod(int, mode_t) 94
|
||||
int dup(int) 41
|
||||
int pipe(int *) 42,42,-1
|
||||
int pipe2(int *, int) 359,331,328
|
||||
int dup2(int, int) 63
|
||||
int select:_newselect(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *) 142
|
||||
int ftruncate(int, off_t) 93
|
||||
int ftruncate64(int, off64_t) 194,194,212
|
||||
int getdents:getdents64(unsigned int, struct dirent *, unsigned int) 217,220,219
|
||||
int fsync(int) 118
|
||||
int fdatasync(int) 148,148,152
|
||||
int fchown:fchown32(int, uid_t, gid_t) 207,207,-1
|
||||
int fchown:fchown(int, uid_t, gid_t) -1,-1,95
|
||||
void sync(void) 36
|
||||
int __fcntl64:fcntl64(int, int, void *) 221,221,220
|
||||
int __fstatfs64:fstatfs64(int, size_t, struct statfs *) 267,269,256
|
||||
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count) 187,187,207
|
||||
int fstatat:fstatat64(int dirfd, const char *path, struct stat *buf, int flags) 327,300,293
|
||||
int mkdirat(int dirfd, const char *pathname, mode_t mode) 323,296,289
|
||||
int fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags) 325,298,291
|
||||
int fchmodat(int dirfd, const char *path, mode_t mode, int flags) 333,306,299
|
||||
int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath) 329,302,295
|
||||
int fsetxattr(int, const char *, const void *, size_t, int) 228,228,226
|
||||
ssize_t fgetxattr(int, const char *, void *, size_t) 231,231,229
|
||||
ssize_t flistxattr(int, char *, size_t) 234,234,232
|
||||
int fremovexattr(int, const char *) 237,237,235
|
||||
void * __mmap2:mmap2(void*, size_t, int, int, int, long) 1
|
||||
int munmap(void *, size_t) 1
|
||||
void * mremap(void *, size_t, size_t, unsigned long) 1
|
||||
int msync(const void *, size_t, int) 1
|
||||
int mprotect(const void *, size_t, int) 1
|
||||
int madvise(const void *, size_t, int) 1
|
||||
int mlock(const void *addr, size_t len) 1
|
||||
int munlock(const void *addr, size_t len) 1
|
||||
int mlockall(int flags) 1
|
||||
int munlockall() 1
|
||||
int mincore(void* start, size_t length, unsigned char* vec) 1
|
||||
int __ioctl:ioctl(int, int, void *) 1
|
||||
int readv(int, const struct iovec *, int) 1
|
||||
int writev(int, const struct iovec *, int) 1
|
||||
int __fcntl:fcntl(int, int, void*) 1
|
||||
int flock(int, int) 1
|
||||
int fchmod(int, mode_t) 1
|
||||
int dup(int) 1
|
||||
int pipe(int *) 1,1,-1
|
||||
int pipe2(int *, int) 1
|
||||
int dup2(int, int) 1
|
||||
int select:_newselect(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *) 1
|
||||
int ftruncate(int, off_t) 1
|
||||
int ftruncate64(int, off64_t) 1
|
||||
int getdents:getdents64(unsigned int, struct dirent *, unsigned int) 1
|
||||
int fsync(int) 1
|
||||
int fdatasync(int) 1
|
||||
int fchown:fchown32(int, uid_t, gid_t) 1,1,-1
|
||||
int fchown:fchown(int, uid_t, gid_t) -1,-1,1
|
||||
void sync(void) 1
|
||||
int __fcntl64:fcntl64(int, int, void *) 1
|
||||
int __fstatfs64:fstatfs64(int, size_t, struct statfs *) 1
|
||||
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count) 1
|
||||
int fstatat:fstatat64(int dirfd, const char *path, struct stat *buf, int flags) 1
|
||||
int mkdirat(int dirfd, const char *pathname, mode_t mode) 1
|
||||
int fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags) 1
|
||||
int fchmodat(int dirfd, const char *path, mode_t mode, int flags) 1
|
||||
int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath) 1
|
||||
int fsetxattr(int, const char *, const void *, size_t, int) 1
|
||||
ssize_t fgetxattr(int, const char *, void *, size_t) 1
|
||||
ssize_t flistxattr(int, char *, size_t) 1
|
||||
int fremovexattr(int, const char *) 1
|
||||
|
||||
# file system
|
||||
int link (const char*, const char*) 9
|
||||
int unlink (const char*) 10
|
||||
int unlinkat (int, const char *, int) 328,301,294
|
||||
int chdir (const char*) 12
|
||||
int mknod (const char*, mode_t, dev_t) 14
|
||||
int chmod (const char*,mode_t) 15
|
||||
int chown:chown32(const char *, uid_t, gid_t) 212,212,-1
|
||||
int chown:chown(const char *, uid_t, gid_t) -1,-1,202
|
||||
int lchown:lchown32 (const char*, uid_t, gid_t) 198,198,-1
|
||||
int lchown:lchown (const char*, uid_t, gid_t) -1,-1,16
|
||||
int mount (const char*, const char*, const char*, unsigned long, const void*) 21
|
||||
int link (const char*, const char*) 1
|
||||
int unlink (const char*) 1
|
||||
int unlinkat (int, const char *, int) 1
|
||||
int chdir (const char*) 1
|
||||
int mknod (const char*, mode_t, dev_t) 1
|
||||
int chmod (const char*,mode_t) 1
|
||||
int chown:chown32(const char *, uid_t, gid_t) 1,1,-1
|
||||
int chown:chown(const char *, uid_t, gid_t) -1,-1,1
|
||||
int lchown:lchown32 (const char*, uid_t, gid_t) 1,1,-1
|
||||
int lchown:lchown (const char*, uid_t, gid_t) -1,-1,1
|
||||
int mount (const char*, const char*, const char*, unsigned long, const void*) 1
|
||||
int umount(const char*) stub
|
||||
int umount2 (const char*, int) 52
|
||||
int fstat:fstat64(int, struct stat*) 197,197,215
|
||||
int stat:stat64(const char *, struct stat *) 195,195,213
|
||||
int lstat:lstat64(const char *, struct stat *) 196,196,214
|
||||
int mkdir(const char *, mode_t) 39
|
||||
int readlink(const char *, char *, size_t) 85
|
||||
int rmdir(const char *) 40
|
||||
int rename(const char *, const char *) 38
|
||||
int __getcwd:getcwd(char * buf, size_t size) 183,183,203
|
||||
int access(const char *, int) 33
|
||||
int faccessat(int, const char *, int, int) 334,307,300
|
||||
int symlink(const char *, const char *) 83
|
||||
int fchdir(int) 133
|
||||
int truncate(const char*, off_t) 92
|
||||
int setxattr(const char *, const char *, const void *, size_t, int) 226,226,224
|
||||
int lsetxattr(const char *, const char *, const void *, size_t, int) 227,227,225
|
||||
ssize_t getxattr(const char *, const char *, void *, size_t) 229,229,227
|
||||
ssize_t lgetxattr(const char *, const char *, void *, size_t) 230,230,228
|
||||
ssize_t listxattr(const char *, char *, size_t) 232,232,230
|
||||
ssize_t llistxattr(const char *, char *, size_t) 233,233,231
|
||||
int removexattr(const char *, const char *) 235,235,233
|
||||
int lremovexattr(const char *, const char *) 236,236,234
|
||||
int __statfs64:statfs64(const char *, size_t, struct statfs *) 266,268,255
|
||||
long unshare(unsigned long) 337,310,303
|
||||
int umount2 (const char*, int) 1
|
||||
int fstat:fstat64(int, struct stat*) 1
|
||||
int stat:stat64(const char *, struct stat *) 1
|
||||
int lstat:lstat64(const char *, struct stat *) 1
|
||||
int mkdir(const char *, mode_t) 1
|
||||
int readlink(const char *, char *, size_t) 1
|
||||
int rmdir(const char *) 1
|
||||
int rename(const char *, const char *) 1
|
||||
int __getcwd:getcwd(char * buf, size_t size) 1
|
||||
int access(const char *, int) 1
|
||||
int faccessat(int, const char *, int, int) 1
|
||||
int symlink(const char *, const char *) 1
|
||||
int fchdir(int) 1
|
||||
int truncate(const char*, off_t) 1
|
||||
int setxattr(const char *, const char *, const void *, size_t, int) 1
|
||||
int lsetxattr(const char *, const char *, const void *, size_t, int) 1
|
||||
ssize_t getxattr(const char *, const char *, void *, size_t) 1
|
||||
ssize_t lgetxattr(const char *, const char *, void *, size_t) 1
|
||||
ssize_t listxattr(const char *, char *, size_t) 1
|
||||
ssize_t llistxattr(const char *, char *, size_t) 1
|
||||
int removexattr(const char *, const char *) 1
|
||||
int lremovexattr(const char *, const char *) 1
|
||||
int __statfs64:statfs64(const char *, size_t, struct statfs *) 1
|
||||
long unshare(unsigned long) 1
|
||||
|
||||
# time
|
||||
int pause () 29
|
||||
int gettimeofday(struct timeval*, struct timezone*) 78
|
||||
int settimeofday(const struct timeval*, const struct timezone*) 79
|
||||
clock_t times(struct tms *) 43
|
||||
int nanosleep(const struct timespec *, struct timespec *) 162,162,166
|
||||
int clock_gettime(clockid_t clk_id, struct timespec *tp) 263,265,263
|
||||
int clock_settime(clockid_t clk_id, const struct timespec *tp) 262,264,262
|
||||
int clock_getres(clockid_t clk_id, struct timespec *res) 264,266,264
|
||||
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *req, struct timespec *rem) 265,267,265
|
||||
int getitimer(int, const struct itimerval *) 105
|
||||
int setitimer(int, const struct itimerval *, struct itimerval *) 104
|
||||
int __timer_create:timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid) 257,259,257
|
||||
int __timer_settime:timer_settime(timer_t, int, const struct itimerspec*, struct itimerspec*) 258,260,258
|
||||
int __timer_gettime:timer_gettime(timer_t, struct itimerspec*) 259,261,259
|
||||
int __timer_getoverrun:timer_getoverrun(timer_t) 260,262,260
|
||||
int __timer_delete:timer_delete(timer_t) 261,263,261
|
||||
int utimes(const char*, const struct timeval tvp[2]) 269,271,267
|
||||
int utimensat(int, const char *, const struct timespec times[2], int) 348,320,316
|
||||
int pause () 1
|
||||
int gettimeofday(struct timeval*, struct timezone*) 1
|
||||
int settimeofday(const struct timeval*, const struct timezone*) 1
|
||||
clock_t times(struct tms *) 1
|
||||
int nanosleep(const struct timespec *, struct timespec *) 1
|
||||
int clock_gettime(clockid_t clk_id, struct timespec *tp) 1
|
||||
int clock_settime(clockid_t clk_id, const struct timespec *tp) 1
|
||||
int clock_getres(clockid_t clk_id, struct timespec *res) 1
|
||||
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *req, struct timespec *rem) 1
|
||||
int getitimer(int, const struct itimerval *) 1
|
||||
int setitimer(int, const struct itimerval *, struct itimerval *) 1
|
||||
int __timer_create:timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid) 1
|
||||
int __timer_settime:timer_settime(timer_t, int, const struct itimerspec*, struct itimerspec*) 1
|
||||
int __timer_gettime:timer_gettime(timer_t, struct itimerspec*) 1
|
||||
int __timer_getoverrun:timer_getoverrun(timer_t) 1
|
||||
int __timer_delete:timer_delete(timer_t) 1
|
||||
int utimes(const char*, const struct timeval tvp[2]) 1
|
||||
int utimensat(int, const char *, const struct timespec times[2], int) 1
|
||||
|
||||
# signals
|
||||
int sigaction(int, const struct sigaction *, struct sigaction *) 67
|
||||
int sigprocmask(int, const sigset_t *, sigset_t *) 126
|
||||
int __sigsuspend:sigsuspend(int unused1, int unused2, unsigned mask) 72,72,-1
|
||||
int __sigsuspend:sigsuspend(const sigset_t *mask) -1,-1,72
|
||||
int __rt_sigaction:rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize) 174,174,194
|
||||
int __rt_sigprocmask:rt_sigprocmask (int how, const sigset_t *set, sigset_t *oset, size_t sigsetsize) 175,175,195
|
||||
int __rt_sigtimedwait:rt_sigtimedwait(const sigset_t *set, struct siginfo_t *info, struct timespec_t *timeout, size_t sigset_size) 177,177,197
|
||||
int sigpending(sigset_t *) 73
|
||||
int signalfd4(int fd, const sigset_t *mask, size_t sizemask, int flags) 355,327,324
|
||||
int sigaction(int, const struct sigaction *, struct sigaction *) 1
|
||||
int sigprocmask(int, const sigset_t *, sigset_t *) 1
|
||||
int __sigsuspend:sigsuspend(int unused1, int unused2, unsigned mask) 1,1,-1
|
||||
int __sigsuspend:sigsuspend(const sigset_t *mask) -1,-1,1
|
||||
int __rt_sigaction:rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize) 1
|
||||
int __rt_sigprocmask:rt_sigprocmask (int how, const sigset_t *set, sigset_t *oset, size_t sigsetsize) 1
|
||||
int __rt_sigtimedwait:rt_sigtimedwait(const sigset_t *set, struct siginfo_t *info, struct timespec_t *timeout, size_t sigset_size) 1
|
||||
int sigpending(sigset_t *) 1
|
||||
int signalfd4(int fd, const sigset_t *mask, size_t sizemask, int flags) 1
|
||||
|
||||
# sockets
|
||||
int socket(int, int, int) 281,-1,183
|
||||
int socketpair(int, int, int, int*) 288,-1,184
|
||||
int bind(int, struct sockaddr *, int) 282,-1,169
|
||||
int connect(int, struct sockaddr *, socklen_t) 283,-1,170
|
||||
int listen(int, int) 284,-1,174
|
||||
int accept(int, struct sockaddr *, socklen_t *) 285,-1,168
|
||||
int getsockname(int, struct sockaddr *, socklen_t *) 286,-1,172
|
||||
int getpeername(int, struct sockaddr *, socklen_t *) 287,-1,171
|
||||
int sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t) 290,-1,180
|
||||
int recvfrom(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) 292,-1,176
|
||||
int shutdown(int, int) 293,-1,182
|
||||
int setsockopt(int, int, int, const void *, socklen_t) 294,-1,181
|
||||
int getsockopt(int, int, int, void *, socklen_t *) 295,-1,173
|
||||
int sendmsg(int, const struct msghdr *, unsigned int) 296,-1,179
|
||||
int recvmsg(int, struct msghdr *, unsigned int) 297,-1,177
|
||||
int socket(int, int, int) 1,-1,1
|
||||
int socketpair(int, int, int, int*) 1,-1,1
|
||||
int bind(int, struct sockaddr *, int) 1,-1,1
|
||||
int connect(int, struct sockaddr *, socklen_t) 1,-1,1
|
||||
int listen(int, int) 1,-1,1
|
||||
int accept(int, struct sockaddr *, socklen_t *) 1,-1,1
|
||||
int getsockname(int, struct sockaddr *, socklen_t *) 1,-1,1
|
||||
int getpeername(int, struct sockaddr *, socklen_t *) 1,-1,1
|
||||
int sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t) 1,-1,1
|
||||
int recvfrom(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) 1,-1,1
|
||||
int shutdown(int, int) 1,-1,1
|
||||
int setsockopt(int, int, int, const void *, socklen_t) 1,-1,1
|
||||
int getsockopt(int, int, int, void *, socklen_t *) 1,-1,1
|
||||
int sendmsg(int, const struct msghdr *, unsigned int) 1,-1,1
|
||||
int recvmsg(int, struct msghdr *, unsigned int) 1,-1,1
|
||||
|
||||
# sockets for x86. These are done as an "indexed" call to socketcall syscall.
|
||||
int socket:socketcall:1 (int, int, int) -1,102,-1
|
||||
int bind:socketcall:2 (int, struct sockaddr *, int) -1,102,-1
|
||||
int connect:socketcall:3(int, struct sockaddr *, socklen_t) -1,102,-1
|
||||
int listen:socketcall:4(int, int) -1,102,-1
|
||||
int accept:socketcall:5(int, struct sockaddr *, socklen_t *) -1,102,-1
|
||||
int getsockname:socketcall:6(int, struct sockaddr *, socklen_t *) -1,102,-1
|
||||
int getpeername:socketcall:7(int, struct sockaddr *, socklen_t *) -1,102,-1
|
||||
int socketpair:socketcall:8(int, int, int, int*) -1,102,-1
|
||||
int sendto:socketcall:11(int, const void *, size_t, int, const struct sockaddr *, socklen_t) -1,102,-1
|
||||
int recvfrom:socketcall:12(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) -1,102,-1
|
||||
int shutdown:socketcall:13(int, int) -1,102,-1
|
||||
int setsockopt:socketcall:14(int, int, int, const void *, socklen_t) -1,102,-1
|
||||
int getsockopt:socketcall:15(int, int, int, void *, socklen_t *) -1,102,-1
|
||||
int sendmsg:socketcall:16(int, const struct msghdr *, unsigned int) -1,102,-1
|
||||
int recvmsg:socketcall:17(int, struct msghdr *, unsigned int) -1,102,-1
|
||||
int socket:socketcall:1 (int, int, int) -1,1,-1
|
||||
int bind:socketcall:2 (int, struct sockaddr *, int) -1,1,-1
|
||||
int connect:socketcall:3(int, struct sockaddr *, socklen_t) -1,1,-1
|
||||
int listen:socketcall:4(int, int) -1,1,-1
|
||||
int accept:socketcall:5(int, struct sockaddr *, socklen_t *) -1,1,-1
|
||||
int getsockname:socketcall:6(int, struct sockaddr *, socklen_t *) -1,1,-1
|
||||
int getpeername:socketcall:7(int, struct sockaddr *, socklen_t *) -1,1,-1
|
||||
int socketpair:socketcall:8(int, int, int, int*) -1,1,-1
|
||||
int sendto:socketcall:11(int, const void *, size_t, int, const struct sockaddr *, socklen_t) -1,1,-1
|
||||
int recvfrom:socketcall:12(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) -1,1,-1
|
||||
int shutdown:socketcall:13(int, int) -1,1,-1
|
||||
int setsockopt:socketcall:14(int, int, int, const void *, socklen_t) -1,1,-1
|
||||
int getsockopt:socketcall:15(int, int, int, void *, socklen_t *) -1,1,-1
|
||||
int sendmsg:socketcall:16(int, const struct msghdr *, unsigned int) -1,1,-1
|
||||
int recvmsg:socketcall:17(int, struct msghdr *, unsigned int) -1,1,-1
|
||||
|
||||
# scheduler & real-time
|
||||
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param) 156,156,160
|
||||
int sched_getscheduler(pid_t pid) 157,157,161
|
||||
int sched_yield(void) 158,158,162
|
||||
int sched_setparam(pid_t pid, const struct sched_param *param) 154,154,158
|
||||
int sched_getparam(pid_t pid, struct sched_param *param) 155,155,159
|
||||
int sched_get_priority_max(int policy) 159,159,163
|
||||
int sched_get_priority_min(int policy) 160,160,164
|
||||
int sched_rr_get_interval(pid_t pid, struct timespec *interval) 161,161,165
|
||||
int sched_setaffinity(pid_t pid, size_t setsize, const cpu_set_t* set) 241,241,239
|
||||
int __sched_getaffinity:sched_getaffinity(pid_t pid, size_t setsize, cpu_set_t* set) 242,242,240
|
||||
int __getcpu:getcpu(unsigned *cpu, unsigned *node, void *unused) 345,318,312
|
||||
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param) 1
|
||||
int sched_getscheduler(pid_t pid) 1
|
||||
int sched_yield(void) 1
|
||||
int sched_setparam(pid_t pid, const struct sched_param *param) 1
|
||||
int sched_getparam(pid_t pid, struct sched_param *param) 1
|
||||
int sched_get_priority_max(int policy) 1
|
||||
int sched_get_priority_min(int policy) 1
|
||||
int sched_rr_get_interval(pid_t pid, struct timespec *interval) 1
|
||||
int sched_setaffinity(pid_t pid, size_t setsize, const cpu_set_t* set) 1
|
||||
int __sched_getaffinity:sched_getaffinity(pid_t pid, size_t setsize, cpu_set_t* set) 1
|
||||
int __getcpu:getcpu(unsigned *cpu, unsigned *node, void *unused) 1
|
||||
|
||||
# io priorities
|
||||
int ioprio_set(int which, int who, int ioprio) 314,289,314
|
||||
int ioprio_get(int which, int who) 315,290,315
|
||||
int ioprio_set(int which, int who, int ioprio) 1
|
||||
int ioprio_get(int which, int who) 1
|
||||
|
||||
# other
|
||||
int uname(struct utsname *) 122
|
||||
mode_t umask(mode_t) 60
|
||||
int __reboot:reboot(int, int, int, void *) 88
|
||||
int __syslog:syslog(int, char *, int) 103
|
||||
int init_module(void *, unsigned long, const char *) 128
|
||||
int delete_module(const char*, unsigned int) 129
|
||||
int klogctl:syslog(int, char *, int) 103
|
||||
int sysinfo(struct sysinfo *) 116
|
||||
int personality(unsigned long) 136
|
||||
long perf_event_open(struct perf_event_attr *attr_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags) 364,336,333
|
||||
int uname(struct utsname *) 1
|
||||
mode_t umask(mode_t) 1
|
||||
int __reboot:reboot(int, int, int, void *) 1
|
||||
int __syslog:syslog(int, char *, int) 1
|
||||
int init_module(void *, unsigned long, const char *) 1
|
||||
int delete_module(const char*, unsigned int) 1
|
||||
int klogctl:syslog(int, char *, int) 1
|
||||
int sysinfo(struct sysinfo *) 1
|
||||
int personality(unsigned long) 1
|
||||
long perf_event_open(struct perf_event_attr *attr_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags) 1
|
||||
|
||||
# futex
|
||||
int futex(void *, int, int, void *, void *, int) 240,240,238
|
||||
int futex(void *, int, int, void *, void *, int) 1
|
||||
|
||||
# epoll
|
||||
int epoll_create(int size) 250,254,248
|
||||
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) 251,255,249
|
||||
int epoll_wait(int epfd, struct epoll_event *events, int max, int timeout) 252,256,250
|
||||
int epoll_create(int size) 1
|
||||
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) 1
|
||||
int epoll_wait(int epfd, struct epoll_event *events, int max, int timeout) 1
|
||||
|
||||
int inotify_init(void) 316,291,284
|
||||
int inotify_add_watch(int, const char *, unsigned int) 317,292,285
|
||||
int inotify_rm_watch(int, unsigned int) 318,293,286
|
||||
int inotify_init(void) 1
|
||||
int inotify_add_watch(int, const char *, unsigned int) 1
|
||||
int inotify_rm_watch(int, unsigned int) 1
|
||||
|
||||
int poll(struct pollfd *, unsigned int, long) 168,168,188
|
||||
int poll(struct pollfd *, unsigned int, long) 1
|
||||
|
||||
int eventfd:eventfd2(unsigned int, int) 356,328,325
|
||||
int eventfd:eventfd2(unsigned int, int) 1
|
||||
|
||||
# ARM-specific ARM_NR_BASE == 0x0f0000 == 983040
|
||||
int __set_tls:__ARM_NR_set_tls(void*) 983045,-1,-1
|
||||
int cacheflush:__ARM_NR_cacheflush(long start, long end, long flags) 983042,-1,-1
|
||||
int __set_tls:__ARM_NR_set_tls(void*) 1,-1,-1
|
||||
int cacheflush:__ARM_NR_cacheflush(long start, long end, long flags) 1,-1,-1
|
||||
|
||||
# MIPS-specific
|
||||
int _flush_cache:cacheflush(char *addr, const int nbytes, const int op) -1,-1,147
|
||||
int syscall(int number,...) -1,-1,0
|
||||
int _flush_cache:cacheflush(char *addr, const int nbytes, const int op) -1,-1,1
|
||||
int syscall(int number,...) -1,-1,1
|
||||
|
1
libc/arch-arm/cortex-a7/cortex-a7.mk
Normal file
1
libc/arch-arm/cortex-a7/cortex-a7.mk
Normal file
@@ -0,0 +1 @@
|
||||
include bionic/libc/arch-arm/cortex-a15/cortex-a15.mk
|
@@ -32,6 +32,5 @@
|
||||
#include "libc_logging.h"
|
||||
|
||||
void __stack_chk_fail() {
|
||||
__libc_format_log(ANDROID_LOG_FATAL, "libc", "stack corruption detected");
|
||||
abort();
|
||||
__libc_fatal("stack corruption detected");
|
||||
}
|
||||
|
@@ -28,27 +28,16 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "libc_logging.h"
|
||||
|
||||
// We log to stderr for the benefit of "adb shell" users, and the log for the benefit
|
||||
// of regular app developers who want to see their asserts.
|
||||
|
||||
void __assert(const char* file, int line, const char* failed_expression) {
|
||||
const char* fmt = "%s:%d: assertion \"%s\" failed\n";
|
||||
__libc_format_log(ANDROID_LOG_FATAL, "libc", fmt, file, line, failed_expression);
|
||||
fprintf(stderr, fmt, file, line, failed_expression);
|
||||
abort();
|
||||
__libc_fatal("%s:%d: assertion \"%s\" failed", file, line, failed_expression);
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
void __assert2(const char* file, int line, const char* function, const char* failed_expression) {
|
||||
const char* fmt = "%s:%d: %s: assertion \"%s\" failed\n";
|
||||
__libc_format_log(ANDROID_LOG_FATAL, "libc", fmt, file, line, function, failed_expression);
|
||||
fprintf(stderr, fmt, file, line, function, failed_expression);
|
||||
abort();
|
||||
__libc_fatal("%s:%d: %s: assertion \"%s\" failed", file, line, function, failed_expression);
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
@@ -91,6 +91,24 @@ static _Unwind_Reason_Code trace_function(__unwind_context* context, void* arg)
|
||||
return _URC_NO_REASON;
|
||||
}
|
||||
|
||||
#ifdef __arm__
|
||||
/*
|
||||
* The instruction pointer is pointing at the instruction after the bl(x), and
|
||||
* the _Unwind_Backtrace routine already masks the Thumb mode indicator (LSB
|
||||
* in PC). So we need to do a quick check here to find out if the previous
|
||||
* instruction is a Thumb-mode BLX(2). If so subtract 2 otherwise 4 from PC.
|
||||
*/
|
||||
if (ip != 0) {
|
||||
short* ptr = reinterpret_cast<short*>(ip);
|
||||
// Thumb BLX(2)
|
||||
if ((*(ptr-1) & 0xff80) == 0x4780) {
|
||||
ip -= 2;
|
||||
} else {
|
||||
ip -= 4;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
state->frames[state->frame_count++] = ip;
|
||||
return (state->frame_count >= state->max_depth) ? _URC_END_OF_STACK : _URC_NO_REASON;
|
||||
}
|
||||
|
@@ -16,15 +16,7 @@
|
||||
|
||||
#include "dlmalloc.h"
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <linux/ashmem.h>
|
||||
|
||||
#include <private/libc_logging.h>
|
||||
#include "private/libc_logging.h"
|
||||
|
||||
// Send dlmalloc errors to the log.
|
||||
static void __bionic_heap_corruption_error(const char* function);
|
||||
@@ -33,51 +25,16 @@ static void __bionic_heap_usage_error(const char* function, void* address);
|
||||
#define CORRUPTION_ERROR_ACTION(m) __bionic_heap_corruption_error(__FUNCTION__)
|
||||
#define USAGE_ERROR_ACTION(m,p) __bionic_heap_usage_error(__FUNCTION__, p)
|
||||
|
||||
// We use ashmem to name the anonymous private regions created by dlmalloc.
|
||||
static void* __bionic_named_anonymous_mmap(size_t length);
|
||||
#define MMAP(s) __bionic_named_anonymous_mmap(s)
|
||||
|
||||
// Ugly inclusion of C file so that bionic specific #defines configure dlmalloc.
|
||||
#include "../upstream-dlmalloc/malloc.c"
|
||||
|
||||
static void __bionic_heap_corruption_error(const char* function) {
|
||||
__libc_format_log(ANDROID_LOG_FATAL, "libc", "@@@ ABORTING: heap corruption detected by %s",
|
||||
function);
|
||||
abort();
|
||||
__libc_fatal("@@@ ABORTING: heap corruption detected by %s", function);
|
||||
}
|
||||
|
||||
static void __bionic_heap_usage_error(const char* function, void* address) {
|
||||
__libc_format_log(ANDROID_LOG_FATAL, "libc",
|
||||
"@@@ ABORTING: invalid address or address of corrupt block %p passed to %s",
|
||||
address, function);
|
||||
__libc_fatal("@@@ ABORTING: invalid address or address of corrupt block %p passed to %s",
|
||||
address, function);
|
||||
// So that we can get a memory dump around the specific address.
|
||||
*((int**) 0xdeadbaad) = (int*) address;
|
||||
}
|
||||
|
||||
static int __ashmem_create_region(const char* name, size_t size) {
|
||||
int fd = open("/dev/ashmem", O_RDWR);
|
||||
if (fd == -1) {
|
||||
return fd;
|
||||
}
|
||||
int rc = ioctl(fd, ASHMEM_SET_NAME, name);
|
||||
if (rc < 0) {
|
||||
close(fd);
|
||||
return rc;
|
||||
}
|
||||
rc = ioctl(fd, ASHMEM_SET_SIZE, size);
|
||||
if (rc < 0) {
|
||||
close(fd);
|
||||
return rc;
|
||||
}
|
||||
return fd;
|
||||
}
|
||||
|
||||
static void* __bionic_named_anonymous_mmap(size_t length) {
|
||||
int fd = __ashmem_create_region("libc malloc", length);
|
||||
if (fd < 0) {
|
||||
return MAP_FAILED;
|
||||
}
|
||||
void* result = mmap(NULL, length, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
|
||||
close (fd);
|
||||
return result;
|
||||
}
|
||||
|
@@ -29,25 +29,6 @@
|
||||
#include <sys/eventfd.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/* We duplicate the GLibc error semantics, which are poorly defined
|
||||
* if the read() or write() does not return the proper number of bytes.
|
||||
*/
|
||||
int eventfd_read(int fd, eventfd_t *counter)
|
||||
{
|
||||
int ret = read(fd, counter, sizeof(*counter));
|
||||
|
||||
if (ret == sizeof(*counter))
|
||||
return 0;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int eventfd_write(int fd, eventfd_t counter)
|
||||
{
|
||||
int ret = write(fd, &counter, sizeof(counter));
|
||||
|
||||
if (ret == sizeof(counter))
|
||||
return 0;
|
||||
|
||||
return -1;
|
||||
int eventfd_read(int fd, eventfd_t* value) {
|
||||
return (read(fd, value, sizeof(*value)) == sizeof(*value)) ? 0 : -1;
|
||||
}
|
34
libc/bionic/eventfd_write.cpp
Normal file
34
libc/bionic/eventfd_write.cpp
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2010 The Android Open Source Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/eventfd.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int eventfd_write(int fd, eventfd_t value) {
|
||||
return (write(fd, &value, sizeof(value)) == sizeof(value)) ? 0 : -1;
|
||||
}
|
@@ -45,6 +45,7 @@
|
||||
#include "private/KernelArgumentBlock.h"
|
||||
#include "pthread_internal.h"
|
||||
|
||||
extern "C" abort_msg_t** __abort_message_ptr;
|
||||
extern "C" unsigned __get_sp(void);
|
||||
extern "C" int __system_properties_init(void);
|
||||
|
||||
@@ -96,6 +97,7 @@ void __libc_init_common(KernelArgumentBlock& args) {
|
||||
errno = 0;
|
||||
__libc_auxv = args.auxv;
|
||||
__progname = args.argv[0] ? args.argv[0] : "<unknown>";
|
||||
__abort_message_ptr = args.abort_message_ptr;
|
||||
|
||||
// AT_RANDOM is a pointer to 16 bytes of randomness on the stack.
|
||||
__stack_chk_guard = *reinterpret_cast<uintptr_t*>(getauxval(AT_RANDOM));
|
||||
|
@@ -31,228 +31,96 @@
|
||||
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <pthread.h>
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/*** Generic output sink
|
||||
***/
|
||||
|
||||
struct Out {
|
||||
void *opaque;
|
||||
void (*send)(void *opaque, const char *data, int len);
|
||||
};
|
||||
|
||||
static void out_send(Out *o, const char *data, size_t len) {
|
||||
o->send(o->opaque, data, (int)len);
|
||||
}
|
||||
|
||||
static void
|
||||
out_send_repeat(Out *o, char ch, int count)
|
||||
{
|
||||
char pad[8];
|
||||
const int padSize = (int)sizeof(pad);
|
||||
|
||||
memset(pad, ch, sizeof(pad));
|
||||
while (count > 0) {
|
||||
int avail = count;
|
||||
if (avail > padSize) {
|
||||
avail = padSize;
|
||||
}
|
||||
o->send(o->opaque, pad, avail);
|
||||
count -= avail;
|
||||
}
|
||||
}
|
||||
|
||||
/* forward declaration */
|
||||
static void out_vformat(Out* o, const char* format, va_list args);
|
||||
|
||||
/*** Bounded buffer output
|
||||
***/
|
||||
|
||||
struct BufOut {
|
||||
Out out[1];
|
||||
char *buffer;
|
||||
char *pos;
|
||||
char *end;
|
||||
int total;
|
||||
};
|
||||
|
||||
static void buf_out_send(void *opaque, const char *data, int len) {
|
||||
BufOut *bo = reinterpret_cast<BufOut*>(opaque);
|
||||
|
||||
if (len < 0) {
|
||||
len = strlen(data);
|
||||
}
|
||||
|
||||
bo->total += len;
|
||||
|
||||
while (len > 0) {
|
||||
int avail = bo->end - bo->pos;
|
||||
if (avail == 0)
|
||||
break;
|
||||
if (avail > len)
|
||||
avail = len;
|
||||
memcpy(bo->pos, data, avail);
|
||||
bo->pos += avail;
|
||||
bo->pos[0] = '\0';
|
||||
len -= avail;
|
||||
}
|
||||
}
|
||||
|
||||
static Out*
|
||||
buf_out_init(BufOut *bo, char *buffer, size_t size)
|
||||
{
|
||||
if (size == 0)
|
||||
return NULL;
|
||||
|
||||
bo->out->opaque = bo;
|
||||
bo->out->send = buf_out_send;
|
||||
bo->buffer = buffer;
|
||||
bo->end = buffer + size - 1;
|
||||
bo->pos = bo->buffer;
|
||||
bo->pos[0] = '\0';
|
||||
bo->total = 0;
|
||||
|
||||
return bo->out;
|
||||
}
|
||||
|
||||
static int
|
||||
buf_out_length(BufOut *bo)
|
||||
{
|
||||
return bo->total;
|
||||
}
|
||||
|
||||
static int
|
||||
vformat_buffer(char *buff, size_t buf_size, const char *format, va_list args)
|
||||
{
|
||||
BufOut bo;
|
||||
Out *out;
|
||||
|
||||
out = buf_out_init(&bo, buff, buf_size);
|
||||
if (out == NULL)
|
||||
return 0;
|
||||
|
||||
out_vformat(out, format, args);
|
||||
|
||||
return buf_out_length(&bo);
|
||||
}
|
||||
|
||||
int __libc_format_buffer(char* buffer, size_t buffer_size, const char* format, ...) {
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
int result = vformat_buffer(buffer, buffer_size, format, args);
|
||||
va_end(args);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/*** File descriptor output
|
||||
***/
|
||||
|
||||
struct FdOut {
|
||||
Out out[1];
|
||||
int fd;
|
||||
int total;
|
||||
};
|
||||
|
||||
static void
|
||||
fd_out_send(void *opaque, const char *data, int len)
|
||||
{
|
||||
FdOut *fdo = reinterpret_cast<FdOut*>(opaque);
|
||||
|
||||
if (len < 0)
|
||||
len = strlen(data);
|
||||
|
||||
while (len > 0) {
|
||||
int ret = write(fdo->fd, data, len);
|
||||
if (ret < 0) {
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
data += ret;
|
||||
len -= ret;
|
||||
fdo->total += ret;
|
||||
}
|
||||
}
|
||||
|
||||
static Out*
|
||||
fd_out_init(FdOut *fdo, int fd)
|
||||
{
|
||||
fdo->out->opaque = fdo;
|
||||
fdo->out->send = fd_out_send;
|
||||
fdo->fd = fd;
|
||||
fdo->total = 0;
|
||||
|
||||
return fdo->out;
|
||||
}
|
||||
|
||||
static int
|
||||
fd_out_length(FdOut *fdo)
|
||||
{
|
||||
return fdo->total;
|
||||
}
|
||||
|
||||
|
||||
int __libc_format_fd(int fd, const char* format, ...) {
|
||||
FdOut fdo;
|
||||
Out* out = fd_out_init(&fdo, fd);
|
||||
if (out == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
out_vformat(out, format, args);
|
||||
va_end(args);
|
||||
|
||||
return fd_out_length(&fdo);
|
||||
}
|
||||
|
||||
/*** Log output
|
||||
***/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/uio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static pthread_mutex_t gAbortMsgLock = PTHREAD_MUTEX_INITIALIZER;
|
||||
static pthread_mutex_t gLogInitializationLock = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
int __libc_format_log_va_list(int priority, const char* tag, const char* fmt, va_list args) {
|
||||
char buf[1024];
|
||||
int buf_strlen = vformat_buffer(buf, sizeof(buf), fmt, args);
|
||||
__LIBC_HIDDEN__ abort_msg_t** __abort_message_ptr; // Accessible to __libc_init_common.
|
||||
|
||||
static int main_log_fd = -1;
|
||||
if (main_log_fd == -1) {
|
||||
ScopedPthreadMutexLocker locker(&gLogInitializationLock);
|
||||
main_log_fd = TEMP_FAILURE_RETRY(open("/dev/log/main", O_CLOEXEC | O_WRONLY));
|
||||
if (main_log_fd == -1) {
|
||||
return -1;
|
||||
// Must be kept in sync with frameworks/base/core/java/android/util/EventLog.java.
|
||||
enum AndroidEventLogType {
|
||||
EVENT_TYPE_INT = 0,
|
||||
EVENT_TYPE_LONG = 1,
|
||||
EVENT_TYPE_STRING = 2,
|
||||
EVENT_TYPE_LIST = 3,
|
||||
};
|
||||
|
||||
struct BufferOutputStream {
|
||||
public:
|
||||
BufferOutputStream(char* buffer, size_t size) : total(0) {
|
||||
buffer_ = buffer;
|
||||
end_ = buffer + size - 1;
|
||||
pos_ = buffer_;
|
||||
pos_[0] = '\0';
|
||||
}
|
||||
|
||||
~BufferOutputStream() {
|
||||
}
|
||||
|
||||
void Send(const char* data, int len) {
|
||||
if (len < 0) {
|
||||
len = strlen(data);
|
||||
}
|
||||
|
||||
while (len > 0) {
|
||||
int avail = end_ - pos_;
|
||||
if (avail == 0) {
|
||||
break;
|
||||
}
|
||||
if (avail > len) {
|
||||
avail = len;
|
||||
}
|
||||
memcpy(pos_, data, avail);
|
||||
pos_ += avail;
|
||||
pos_[0] = '\0';
|
||||
len -= avail;
|
||||
total += avail;
|
||||
}
|
||||
}
|
||||
|
||||
struct iovec vec[3];
|
||||
vec[0].iov_base = &priority;
|
||||
vec[0].iov_len = 1;
|
||||
vec[1].iov_base = const_cast<char*>(tag);
|
||||
vec[1].iov_len = strlen(tag) + 1;
|
||||
vec[2].iov_base = const_cast<char*>(buf);
|
||||
vec[2].iov_len = buf_strlen + 1;
|
||||
int total;
|
||||
|
||||
return TEMP_FAILURE_RETRY(writev(main_log_fd, vec, 3));
|
||||
}
|
||||
private:
|
||||
char* buffer_;
|
||||
char* pos_;
|
||||
char* end_;
|
||||
};
|
||||
|
||||
int __libc_format_log(int priority, const char* tag, const char* format, ...) {
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
int result = __libc_format_log_va_list(priority, tag, format, args);
|
||||
va_end(args);
|
||||
return result;
|
||||
}
|
||||
struct FdOutputStream {
|
||||
public:
|
||||
FdOutputStream(int fd) : total(0), fd_(fd) {
|
||||
}
|
||||
|
||||
void Send(const char* data, int len) {
|
||||
if (len < 0) {
|
||||
len = strlen(data);
|
||||
}
|
||||
|
||||
while (len > 0) {
|
||||
int rc = TEMP_FAILURE_RETRY(write(fd_, data, len));
|
||||
if (rc == -1) {
|
||||
break;
|
||||
}
|
||||
data += rc;
|
||||
len -= rc;
|
||||
total += rc;
|
||||
}
|
||||
}
|
||||
|
||||
int total;
|
||||
|
||||
private:
|
||||
int fd_;
|
||||
};
|
||||
|
||||
/*** formatted output implementation
|
||||
***/
|
||||
@@ -263,9 +131,7 @@ int __libc_format_log(int priority, const char* tag, const char* format, ...) {
|
||||
*
|
||||
* NOTE: Does *not* handle a sign prefix.
|
||||
*/
|
||||
static unsigned
|
||||
parse_decimal(const char *format, int *ppos)
|
||||
{
|
||||
static unsigned parse_decimal(const char *format, int *ppos) {
|
||||
const char* p = format + *ppos;
|
||||
unsigned result = 0;
|
||||
|
||||
@@ -273,8 +139,9 @@ parse_decimal(const char *format, int *ppos)
|
||||
int ch = *p;
|
||||
unsigned d = (unsigned)(ch - '0');
|
||||
|
||||
if (d >= 10U)
|
||||
if (d >= 10U) {
|
||||
break;
|
||||
}
|
||||
|
||||
result = result*10 + d;
|
||||
p++;
|
||||
@@ -341,10 +208,25 @@ static void format_integer(char* buf, size_t buf_size, uint64_t value, char conv
|
||||
format_unsigned(buf, buf_size, value, base, caps);
|
||||
}
|
||||
|
||||
template <typename Out>
|
||||
static void SendRepeat(Out& o, char ch, int count) {
|
||||
char pad[8];
|
||||
memset(pad, ch, sizeof(pad));
|
||||
|
||||
const int pad_size = static_cast<int>(sizeof(pad));
|
||||
while (count > 0) {
|
||||
int avail = count;
|
||||
if (avail > pad_size) {
|
||||
avail = pad_size;
|
||||
}
|
||||
o.Send(pad, avail);
|
||||
count -= avail;
|
||||
}
|
||||
}
|
||||
|
||||
/* Perform formatted output to an output target 'o' */
|
||||
static void
|
||||
out_vformat(Out *o, const char *format, va_list args)
|
||||
{
|
||||
template <typename Out>
|
||||
static void out_vformat(Out& o, const char* format, va_list args) {
|
||||
int nn = 0;
|
||||
|
||||
for (;;) {
|
||||
@@ -371,7 +253,7 @@ out_vformat(Out *o, const char *format, va_list args)
|
||||
} while (1);
|
||||
|
||||
if (mm > nn) {
|
||||
out_send(o, format+nn, mm-nn);
|
||||
o.Send(format+nn, mm-nn);
|
||||
nn = mm;
|
||||
}
|
||||
|
||||
@@ -387,7 +269,7 @@ out_vformat(Out *o, const char *format, va_list args)
|
||||
c = format[nn++];
|
||||
if (c == '\0') { /* single trailing '%' ? */
|
||||
c = '%';
|
||||
out_send(o, &c, 1);
|
||||
o.Send(&c, 1);
|
||||
return;
|
||||
}
|
||||
else if (c == '0') {
|
||||
@@ -508,28 +390,74 @@ out_vformat(Out *o, const char *format, va_list args)
|
||||
|
||||
if (slen < width && !padLeft) {
|
||||
char padChar = padZero ? '0' : ' ';
|
||||
out_send_repeat(o, padChar, width - slen);
|
||||
SendRepeat(o, padChar, width - slen);
|
||||
}
|
||||
|
||||
out_send(o, str, slen);
|
||||
o.Send(str, slen);
|
||||
|
||||
if (slen < width && padLeft) {
|
||||
char padChar = padZero ? '0' : ' ';
|
||||
out_send_repeat(o, padChar, width - slen);
|
||||
SendRepeat(o, padChar, width - slen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// must be kept in sync with frameworks/base/core/java/android/util/EventLog.java
|
||||
enum AndroidEventLogType {
|
||||
EVENT_TYPE_INT = 0,
|
||||
EVENT_TYPE_LONG = 1,
|
||||
EVENT_TYPE_STRING = 2,
|
||||
EVENT_TYPE_LIST = 3,
|
||||
};
|
||||
int __libc_format_buffer(char* buffer, size_t buffer_size, const char* format, ...) {
|
||||
BufferOutputStream os(buffer, buffer_size);
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
out_vformat(os, format, args);
|
||||
va_end(args);
|
||||
return os.total;
|
||||
}
|
||||
|
||||
int __libc_format_fd(int fd, const char* format, ...) {
|
||||
FdOutputStream os(fd);
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
out_vformat(os, format, args);
|
||||
va_end(args);
|
||||
return os.total;
|
||||
}
|
||||
|
||||
static int __libc_write_log(int priority, const char* tag, const char* msg) {
|
||||
static int main_log_fd = -1;
|
||||
if (main_log_fd == -1) {
|
||||
ScopedPthreadMutexLocker locker(&gLogInitializationLock);
|
||||
main_log_fd = TEMP_FAILURE_RETRY(open("/dev/log/main", O_CLOEXEC | O_WRONLY));
|
||||
if (main_log_fd == -1) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
iovec vec[3];
|
||||
vec[0].iov_base = &priority;
|
||||
vec[0].iov_len = 1;
|
||||
vec[1].iov_base = const_cast<char*>(tag);
|
||||
vec[1].iov_len = strlen(tag) + 1;
|
||||
vec[2].iov_base = const_cast<char*>(msg);
|
||||
vec[2].iov_len = strlen(msg) + 1;
|
||||
|
||||
return TEMP_FAILURE_RETRY(writev(main_log_fd, vec, 3));
|
||||
}
|
||||
|
||||
int __libc_format_log_va_list(int priority, const char* tag, const char* format, va_list args) {
|
||||
char buffer[1024];
|
||||
BufferOutputStream os(buffer, sizeof(buffer));
|
||||
out_vformat(os, format, args);
|
||||
return __libc_write_log(priority, tag, buffer);
|
||||
}
|
||||
|
||||
int __libc_format_log(int priority, const char* tag, const char* format, ...) {
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
int result = __libc_format_log_va_list(priority, tag, format, args);
|
||||
va_end(args);
|
||||
return result;
|
||||
}
|
||||
|
||||
static int __libc_android_log_event(int32_t tag, char type, const void* payload, size_t len) {
|
||||
struct iovec vec[3];
|
||||
iovec vec[3];
|
||||
vec[0].iov_base = &tag;
|
||||
vec[0].iov_len = sizeof(tag);
|
||||
vec[1].iov_base = &type;
|
||||
@@ -554,9 +482,45 @@ void __libc_android_log_event_uid(int32_t tag) {
|
||||
}
|
||||
|
||||
void __fortify_chk_fail(const char *msg, uint32_t tag) {
|
||||
__libc_format_log(ANDROID_LOG_FATAL, "libc", "FORTIFY_SOURCE: %s. Calling abort().\n", msg);
|
||||
if (tag != 0) {
|
||||
__libc_android_log_event_uid(tag);
|
||||
}
|
||||
__libc_fatal("FORTIFY_SOURCE: %s. Calling abort().", msg);
|
||||
}
|
||||
|
||||
void __libc_fatal(const char* format, ...) {
|
||||
char msg[1024];
|
||||
BufferOutputStream os(msg, sizeof(msg));
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
out_vformat(os, format, args);
|
||||
va_end(args);
|
||||
|
||||
// TODO: log to stderr for the benefit of "adb shell" users.
|
||||
|
||||
// Log to the log for the benefit of regular app developers (whose stdout and stderr are closed).
|
||||
__libc_write_log(ANDROID_LOG_FATAL, "libc", msg);
|
||||
|
||||
__libc_set_abort_message(msg);
|
||||
|
||||
abort();
|
||||
}
|
||||
|
||||
void __libc_set_abort_message(const char* msg) {
|
||||
size_t size = sizeof(abort_msg_t) + strlen(msg) + 1;
|
||||
void* map = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
|
||||
if (map == MAP_FAILED) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (__abort_message_ptr != NULL) {
|
||||
ScopedPthreadMutexLocker locker(&gAbortMsgLock);
|
||||
if (*__abort_message_ptr != NULL) {
|
||||
munmap(*__abort_message_ptr, (*__abort_message_ptr)->size);
|
||||
}
|
||||
abort_msg_t* new_abort_message = reinterpret_cast<abort_msg_t*>(map);
|
||||
new_abort_message->size = size;
|
||||
strcpy(new_abort_message->msg, msg);
|
||||
*__abort_message_ptr = new_abort_message;
|
||||
}
|
||||
}
|
||||
|
@@ -600,7 +600,7 @@ int malloc_debug_initialize() {
|
||||
error_log("Unable to open /dev/qemu_trace");
|
||||
return -1;
|
||||
} else {
|
||||
qtrace = mmap(0, PAGESIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
qtrace = mmap(NULL, PAGESIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
close(fd);
|
||||
|
||||
if (qtrace == MAP_FAILED) {
|
||||
|
@@ -153,6 +153,7 @@ int pthread_create(pthread_t* thread_out, pthread_attr_t const* attr,
|
||||
|
||||
pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(calloc(sizeof(*thread), 1));
|
||||
if (thread == NULL) {
|
||||
__libc_format_log(ANDROID_LOG_WARN, "libc", "pthread_create failed: couldn't allocate thread");
|
||||
return EAGAIN;
|
||||
}
|
||||
thread->allocated_on_heap = true;
|
||||
@@ -172,6 +173,7 @@ int pthread_create(pthread_t* thread_out, pthread_attr_t const* attr,
|
||||
thread->attr.stack_base = __create_thread_stack(stack_size, thread->attr.guard_size);
|
||||
if (thread->attr.stack_base == NULL) {
|
||||
free(thread);
|
||||
__libc_format_log(ANDROID_LOG_WARN, "libc", "pthread_create failed: couldn't allocate %zd-byte stack", stack_size);
|
||||
return EAGAIN;
|
||||
}
|
||||
} else {
|
||||
@@ -203,6 +205,7 @@ int pthread_create(pthread_t* thread_out, pthread_attr_t const* attr,
|
||||
munmap(thread->attr.stack_base, stack_size);
|
||||
}
|
||||
free(thread);
|
||||
__libc_format_log(ANDROID_LOG_WARN, "libc", "pthread_create failed: clone failed: %s", strerror(errno));
|
||||
return clone_errno;
|
||||
}
|
||||
|
||||
|
@@ -106,7 +106,7 @@ int __system_properties_init(void)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
prop_area *pa = mmap(0, fd_stat.st_size, PROT_READ, MAP_SHARED, fd, 0);
|
||||
prop_area *pa = mmap(NULL, fd_stat.st_size, PROT_READ, MAP_SHARED, fd, 0);
|
||||
|
||||
if (pa == MAP_FAILED) {
|
||||
goto cleanup;
|
||||
@@ -150,7 +150,7 @@ const prop_info *__system_property_find(const char *name)
|
||||
while(count--) {
|
||||
unsigned entry = *toc++;
|
||||
if(TOC_NAME_LEN(entry) != len) continue;
|
||||
|
||||
|
||||
pi = TOC_TO_INFO(pa, entry);
|
||||
if(memcmp(name, pi->name, len)) continue;
|
||||
|
||||
@@ -163,7 +163,7 @@ const prop_info *__system_property_find(const char *name)
|
||||
int __system_property_read(const prop_info *pi, char *name, char *value)
|
||||
{
|
||||
unsigned serial, len;
|
||||
|
||||
|
||||
for(;;) {
|
||||
serial = pi->serial;
|
||||
while(SERIAL_DIRTY(serial)) {
|
||||
|
@@ -207,11 +207,13 @@ void endprotoent(void);
|
||||
void endservent(void);
|
||||
void freehostent(struct hostent *);
|
||||
struct hostent *gethostbyaddr(const void *, socklen_t, int);
|
||||
struct hostent *android_gethostbyaddrforiface(const void *, socklen_t, int, const char*);
|
||||
int gethostbyaddr_r(const void *, int, int, struct hostent *, char *, size_t, struct hostent **, int *);
|
||||
struct hostent *gethostbyname(const char *);
|
||||
int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
|
||||
struct hostent *gethostbyname2(const char *, int);
|
||||
int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
|
||||
struct hostent *android_gethostbynameforiface(const char *, int, const char *);
|
||||
struct hostent *gethostent(void);
|
||||
int gethostent_r(struct hostent *, char *, size_t, struct hostent **, int *);
|
||||
struct hostent *getipnodebyaddr(const void *, size_t, int, int *);
|
||||
@@ -239,7 +241,9 @@ void sethostent(int);
|
||||
void setnetent(int);
|
||||
void setprotoent(int);
|
||||
int getaddrinfo(const char *, const char *, const struct addrinfo *, struct addrinfo **);
|
||||
int android_getaddrinfoforiface(const char *, const char *, const struct addrinfo *, const char *, struct addrinfo **);
|
||||
int getnameinfo(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t, int);
|
||||
int android_getnameinfoforiface(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t, int, const char *);
|
||||
void freeaddrinfo(struct addrinfo *);
|
||||
const char *gai_strerror(int);
|
||||
void setnetgrent(const char *);
|
||||
|
@@ -33,17 +33,16 @@
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#define EFD_CLOEXEC O_CLOEXEC
|
||||
#define EFD_NONBLOCK O_NONBLOCK
|
||||
#define EFD_CLOEXEC O_CLOEXEC
|
||||
#define EFD_NONBLOCK O_NONBLOCK
|
||||
|
||||
/* type of event counter */
|
||||
typedef uint64_t eventfd_t;
|
||||
typedef uint64_t eventfd_t;
|
||||
|
||||
extern int eventfd(unsigned int initval, int flags);
|
||||
extern int eventfd(unsigned int initial_value, int flags);
|
||||
|
||||
/* Compatibility with GLibc */
|
||||
extern int eventfd_read(int fd, eventfd_t *counter);
|
||||
extern int eventfd_write(int fd, const eventfd_t counter);
|
||||
extern int eventfd_read(int fd, eventfd_t* value);
|
||||
extern int eventfd_write(int fd, eventfd_t value);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
|
@@ -1,109 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __LINUX_MFD_MSM_ADIE_CODEC_H
|
||||
#define __LINUX_MFD_MSM_ADIE_CODEC_H
|
||||
#include <linux/types.h>
|
||||
#define ADIE_CODEC_ACTION_ENTRY 0x1
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ADIE_CODEC_ACTION_DELAY_WAIT 0x2
|
||||
#define ADIE_CODEC_ACTION_STAGE_REACHED 0x3
|
||||
#define ADIE_CODEC_PATH_OFF 0x0050
|
||||
#define ADIE_CODEC_DIGITAL_READY 0x0100
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ADIE_CODEC_DIGITAL_ANALOG_READY 0x1000
|
||||
#define ADIE_CODEC_ANALOG_OFF 0x0750
|
||||
#define ADIE_CODEC_DIGITAL_OFF 0x0600
|
||||
#define ADIE_CODEC_FLASH_IMAGE 0x0001
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ADIE_CODEC_RX 0
|
||||
#define ADIE_CODEC_TX 1
|
||||
#define ADIE_CODEC_LB 3
|
||||
#define ADIE_CODEC_MAX 4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ADIE_CODEC_PACK_ENTRY(reg, mask, val) ((val)|(mask << 8)|(reg << 16))
|
||||
#define ADIE_CODEC_UNPACK_ENTRY(packed, reg, mask, val) do { ((reg) = ((packed >> 16) & (0xff))); ((mask) = ((packed >> 8) & (0xff))); ((val) = ((packed) & (0xff))); } while (0);
|
||||
struct adie_codec_action_unit {
|
||||
u32 type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 action;
|
||||
};
|
||||
struct adie_codec_hwsetting_entry{
|
||||
struct adie_codec_action_unit *actions;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 action_sz;
|
||||
u32 freq_plan;
|
||||
u32 osr;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct adie_codec_dev_profile {
|
||||
u32 path_type;
|
||||
u32 setting_sz;
|
||||
struct adie_codec_hwsetting_entry *settings;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct adie_codec_register {
|
||||
u8 reg;
|
||||
u8 mask;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u8 val;
|
||||
};
|
||||
struct adie_codec_register_image {
|
||||
struct adie_codec_register *regs;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 img_sz;
|
||||
};
|
||||
struct adie_codec_path;
|
||||
struct adie_codec_anc_data {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 size;
|
||||
u32 writes[];
|
||||
};
|
||||
struct adie_codec_operations {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int codec_id;
|
||||
int (*codec_open) (struct adie_codec_dev_profile *profile,
|
||||
struct adie_codec_path **path_pptr);
|
||||
int (*codec_close) (struct adie_codec_path *path_ptr);
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int (*codec_setpath) (struct adie_codec_path *path_ptr,
|
||||
u32 freq_plan, u32 osr);
|
||||
int (*codec_proceed_stage) (struct adie_codec_path *path_ptr,
|
||||
u32 state);
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 (*codec_freq_supported) (struct adie_codec_dev_profile *profile,
|
||||
u32 requested_freq);
|
||||
int (*codec_enable_sidetone) (struct adie_codec_path *rx_path_ptr,
|
||||
u32 enable);
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int (*codec_enable_anc) (struct adie_codec_path *rx_path_ptr,
|
||||
u32 enable, struct adie_codec_anc_data *calibration_writes);
|
||||
int (*codec_set_device_digital_volume) (
|
||||
struct adie_codec_path *path_ptr,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 num_channels,
|
||||
u32 vol_percentage);
|
||||
int (*codec_set_device_analog_volume) (struct adie_codec_path *path_ptr,
|
||||
u32 num_channels,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 volume);
|
||||
int (*codec_set_master_mode) (struct adie_codec_path *path_ptr,
|
||||
u8 master);
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#endif
|
@@ -1,60 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __LINUX_MSM_ADSP_H
|
||||
#define __LINUX_MSM_ADSP_H
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ADSP_IOCTL_MAGIC 'q'
|
||||
struct adsp_command_t {
|
||||
uint16_t queue;
|
||||
uint32_t len;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint8_t *data;
|
||||
};
|
||||
struct adsp_event_t {
|
||||
uint16_t type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t timeout_ms;
|
||||
uint16_t msg_id;
|
||||
uint16_t flags;
|
||||
uint32_t len;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint8_t *data;
|
||||
};
|
||||
#define ADSP_IOCTL_ENABLE _IOR(ADSP_IOCTL_MAGIC, 1, unsigned)
|
||||
#define ADSP_IOCTL_DISABLE _IOR(ADSP_IOCTL_MAGIC, 2, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ADSP_IOCTL_DISABLE_ACK _IOR(ADSP_IOCTL_MAGIC, 3, unsigned)
|
||||
#define ADSP_IOCTL_WRITE_COMMAND _IOR(ADSP_IOCTL_MAGIC, 4, struct adsp_command_t *)
|
||||
#define ADSP_IOCTL_GET_EVENT _IOWR(ADSP_IOCTL_MAGIC, 5, struct adsp_event_data_t *)
|
||||
#define ADSP_IOCTL_SET_CLKRATE _IOR(ADSP_IOCTL_MAGIC, 6, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ADSP_IOCTL_DISABLE_EVENT_RSP _IOR(ADSP_IOCTL_MAGIC, 10, unsigned)
|
||||
struct adsp_pmem_info {
|
||||
int fd;
|
||||
void *vaddr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#define ADSP_IOCTL_REGISTER_PMEM _IOW(ADSP_IOCTL_MAGIC, 13, unsigned)
|
||||
#define ADSP_IOCTL_UNREGISTER_PMEM _IOW(ADSP_IOCTL_MAGIC, 14, unsigned)
|
||||
#define ADSP_IOCTL_ABORT_EVENT_READ _IOW(ADSP_IOCTL_MAGIC, 15, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ADSP_IOCTL_LINK_TASK _IOW(ADSP_IOCTL_MAGIC, 16, unsigned)
|
||||
#endif
|
@@ -1,345 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __LINUX_MSM_AUDIO_H
|
||||
#define __LINUX_MSM_AUDIO_H
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_IOCTL_MAGIC 'a'
|
||||
#define AUDIO_START _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned)
|
||||
#define AUDIO_STOP _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned)
|
||||
#define AUDIO_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_GET_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 3, unsigned)
|
||||
#define AUDIO_SET_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 4, unsigned)
|
||||
#define AUDIO_GET_STATS _IOR(AUDIO_IOCTL_MAGIC, 5, unsigned)
|
||||
#define AUDIO_ENABLE_AUDPP _IOW(AUDIO_IOCTL_MAGIC, 6, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_ADRC _IOW(AUDIO_IOCTL_MAGIC, 7, unsigned)
|
||||
#define AUDIO_SET_EQ _IOW(AUDIO_IOCTL_MAGIC, 8, unsigned)
|
||||
#define AUDIO_SET_RX_IIR _IOW(AUDIO_IOCTL_MAGIC, 9, unsigned)
|
||||
#define AUDIO_SET_VOLUME _IOW(AUDIO_IOCTL_MAGIC, 10, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_PAUSE _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned)
|
||||
#define AUDIO_PLAY_DTMF _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned)
|
||||
#define AUDIO_GET_EVENT _IOR(AUDIO_IOCTL_MAGIC, 13, unsigned)
|
||||
#define AUDIO_ABORT_GET_EVENT _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_REGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 15, unsigned)
|
||||
#define AUDIO_DEREGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 16, unsigned)
|
||||
#define AUDIO_ASYNC_WRITE _IOW(AUDIO_IOCTL_MAGIC, 17, unsigned)
|
||||
#define AUDIO_ASYNC_READ _IOW(AUDIO_IOCTL_MAGIC, 18, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_INCALL _IOW(AUDIO_IOCTL_MAGIC, 19, struct msm_voicerec_mode)
|
||||
#define AUDIO_GET_NUM_SND_DEVICE _IOR(AUDIO_IOCTL_MAGIC, 20, unsigned)
|
||||
#define AUDIO_GET_SND_DEVICES _IOWR(AUDIO_IOCTL_MAGIC, 21, struct msm_snd_device_list)
|
||||
#define AUDIO_ENABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 22, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_DISABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 23, unsigned)
|
||||
#define AUDIO_ROUTE_STREAM _IOW(AUDIO_IOCTL_MAGIC, 24, struct msm_audio_route_config)
|
||||
#define AUDIO_GET_PCM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 30, unsigned)
|
||||
#define AUDIO_SET_PCM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 31, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SWITCH_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 32, unsigned)
|
||||
#define AUDIO_SET_MUTE _IOW(AUDIO_IOCTL_MAGIC, 33, unsigned)
|
||||
#define AUDIO_UPDATE_ACDB _IOW(AUDIO_IOCTL_MAGIC, 34, unsigned)
|
||||
#define AUDIO_START_VOICE _IOW(AUDIO_IOCTL_MAGIC, 35, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_STOP_VOICE _IOW(AUDIO_IOCTL_MAGIC, 36, unsigned)
|
||||
#define AUDIO_REINIT_ACDB _IOW(AUDIO_IOCTL_MAGIC, 39, unsigned)
|
||||
#define AUDIO_OUTPORT_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 40, unsigned short)
|
||||
#define AUDIO_SET_ERR_THRESHOLD_VALUE _IOW(AUDIO_IOCTL_MAGIC, 41, unsigned short)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_GET_BITSTREAM_ERROR_INFO _IOR(AUDIO_IOCTL_MAGIC, 42, struct msm_audio_bitstream_error_info)
|
||||
#define AUDIO_SET_SRS_TRUMEDIA_PARAM _IOW(AUDIO_IOCTL_MAGIC, 43, unsigned)
|
||||
#define AUDIO_SET_STREAM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 80, struct msm_audio_stream_config)
|
||||
#define AUDIO_GET_STREAM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 81, struct msm_audio_stream_config)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_GET_SESSION_ID _IOR(AUDIO_IOCTL_MAGIC, 82, unsigned short)
|
||||
#define AUDIO_GET_STREAM_INFO _IOR(AUDIO_IOCTL_MAGIC, 83, struct msm_audio_bitstream_info)
|
||||
#define AUDIO_SET_PAN _IOW(AUDIO_IOCTL_MAGIC, 84, unsigned)
|
||||
#define AUDIO_SET_QCONCERT_PLUS _IOW(AUDIO_IOCTL_MAGIC, 85, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_MBADRC _IOW(AUDIO_IOCTL_MAGIC, 86, unsigned)
|
||||
#define AUDIO_SET_VOLUME_PATH _IOW(AUDIO_IOCTL_MAGIC, 87, struct msm_vol_info)
|
||||
#define AUDIO_SET_MAX_VOL_ALL _IOW(AUDIO_IOCTL_MAGIC, 88, unsigned)
|
||||
#define AUDIO_ENABLE_AUDPRE _IOW(AUDIO_IOCTL_MAGIC, 89, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_AGC _IOW(AUDIO_IOCTL_MAGIC, 90, unsigned)
|
||||
#define AUDIO_SET_NS _IOW(AUDIO_IOCTL_MAGIC, 91, unsigned)
|
||||
#define AUDIO_SET_TX_IIR _IOW(AUDIO_IOCTL_MAGIC, 92, unsigned)
|
||||
#define AUDIO_GET_BUF_CFG _IOW(AUDIO_IOCTL_MAGIC, 93, struct msm_audio_buf_cfg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_BUF_CFG _IOW(AUDIO_IOCTL_MAGIC, 94, struct msm_audio_buf_cfg)
|
||||
#define AUDIO_SET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 95, struct msm_acdb_cmd_device)
|
||||
#define AUDIO_GET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 96, struct msm_acdb_cmd_device)
|
||||
#define AUDIO_REGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 97, unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_DEREGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 98, unsigned)
|
||||
#define AUDIO_MAX_COMMON_IOCTL_NUM 100
|
||||
#define HANDSET_MIC 0x01
|
||||
#define HANDSET_SPKR 0x02
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define HEADSET_MIC 0x03
|
||||
#define HEADSET_SPKR_MONO 0x04
|
||||
#define HEADSET_SPKR_STEREO 0x05
|
||||
#define SPKR_PHONE_MIC 0x06
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SPKR_PHONE_MONO 0x07
|
||||
#define SPKR_PHONE_STEREO 0x08
|
||||
#define BT_SCO_MIC 0x09
|
||||
#define BT_SCO_SPKR 0x0A
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define BT_A2DP_SPKR 0x0B
|
||||
#define TTY_HEADSET_MIC 0x0C
|
||||
#define TTY_HEADSET_SPKR 0x0D
|
||||
#define DEFAULT_TX 0x0E
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define DEFAULT_RX 0x0F
|
||||
#define BT_A2DP_TX 0x10
|
||||
#define HEADSET_MONO_PLUS_SPKR_MONO_RX 0x11
|
||||
#define HEADSET_MONO_PLUS_SPKR_STEREO_RX 0x12
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define HEADSET_STEREO_PLUS_SPKR_MONO_RX 0x13
|
||||
#define HEADSET_STEREO_PLUS_SPKR_STEREO_RX 0x14
|
||||
#define I2S_RX 0x20
|
||||
#define I2S_TX 0x21
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ADRC_ENABLE 0x0001
|
||||
#define EQ_ENABLE 0x0002
|
||||
#define IIR_ENABLE 0x0004
|
||||
#define QCONCERT_PLUS_ENABLE 0x0008
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MBADRC_ENABLE 0x0010
|
||||
#define SRS_ENABLE 0x0020
|
||||
#define SRS_DISABLE 0x0040
|
||||
#define AGC_ENABLE 0x0001
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define NS_ENABLE 0x0002
|
||||
#define TX_IIR_ENABLE 0x0004
|
||||
#define FLUENCE_ENABLE 0x0008
|
||||
#define VOC_REC_UPLINK 0x00
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VOC_REC_DOWNLINK 0x01
|
||||
#define VOC_REC_BOTH 0x02
|
||||
struct msm_audio_config {
|
||||
uint32_t buffer_size;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t buffer_count;
|
||||
uint32_t channel_count;
|
||||
uint32_t sample_rate;
|
||||
uint32_t type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t meta_field;
|
||||
uint32_t bits;
|
||||
uint32_t unused[3];
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_audio_stream_config {
|
||||
uint32_t buffer_size;
|
||||
uint32_t buffer_count;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_audio_buf_cfg{
|
||||
uint32_t meta_info_enable;
|
||||
uint32_t frames_per_buf;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_audio_stats {
|
||||
uint32_t byte_count;
|
||||
uint32_t sample_count;
|
||||
uint32_t unused[2];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct msm_audio_ion_info {
|
||||
int fd;
|
||||
void *vaddr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct msm_audio_pmem_info {
|
||||
int fd;
|
||||
void *vaddr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct msm_audio_aio_buf {
|
||||
void *buf_addr;
|
||||
uint32_t buf_len;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t data_len;
|
||||
void *private_data;
|
||||
unsigned short mfield_sz;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_IOCTL_MAGIC 's'
|
||||
#define SND_MUTE_UNMUTED 0
|
||||
#define SND_MUTE_MUTED 1
|
||||
struct msm_mute_info {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t mute;
|
||||
uint32_t path;
|
||||
};
|
||||
struct msm_vol_info {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t vol;
|
||||
uint32_t path;
|
||||
};
|
||||
struct msm_voicerec_mode {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t rec_mode;
|
||||
};
|
||||
struct msm_snd_device_config {
|
||||
uint32_t device;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t ear_mute;
|
||||
uint32_t mic_mute;
|
||||
};
|
||||
#define SND_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_device_config *)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_METHOD_VOICE 0
|
||||
struct msm_snd_volume_config {
|
||||
uint32_t device;
|
||||
uint32_t method;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t volume;
|
||||
};
|
||||
#define SND_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_snd_volume_config *)
|
||||
#define SND_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_snd_endpoint {
|
||||
int id;
|
||||
char name[64];
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_snd_endpoint *)
|
||||
#define SND_AVC_CTL _IOW(SND_IOCTL_MAGIC, 6, unsigned *)
|
||||
#define SND_AGC_CTL _IOW(SND_IOCTL_MAGIC, 7, unsigned *)
|
||||
struct msm_audio_pcm_config {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t pcm_feedback;
|
||||
uint32_t buffer_count;
|
||||
uint32_t buffer_size;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_EVENT_SUSPEND 0
|
||||
#define AUDIO_EVENT_RESUME 1
|
||||
#define AUDIO_EVENT_WRITE_DONE 2
|
||||
#define AUDIO_EVENT_READ_DONE 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_EVENT_STREAM_INFO 4
|
||||
#define AUDIO_EVENT_BITSTREAM_ERROR_INFO 5
|
||||
#define AUDIO_CODEC_TYPE_MP3 0
|
||||
#define AUDIO_CODEC_TYPE_AAC 1
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_audio_bitstream_info {
|
||||
uint32_t codec_type;
|
||||
uint32_t chan_info;
|
||||
uint32_t sample_rate;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t bit_stream_info;
|
||||
uint32_t bit_rate;
|
||||
uint32_t unused[3];
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_audio_bitstream_error_info {
|
||||
uint32_t dec_id;
|
||||
uint32_t err_msg_indicator;
|
||||
uint32_t err_type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
union msm_audio_event_payload {
|
||||
struct msm_audio_aio_buf aio_buf;
|
||||
struct msm_audio_bitstream_info stream_info;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_audio_bitstream_error_info error_info;
|
||||
int reserved;
|
||||
};
|
||||
struct msm_audio_event {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int event_type;
|
||||
int timeout_ms;
|
||||
union msm_audio_event_payload event_payload;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_SNDDEV_CAP_RX 0x1
|
||||
#define MSM_SNDDEV_CAP_TX 0x2
|
||||
#define MSM_SNDDEV_CAP_VOICE 0x4
|
||||
struct msm_snd_device_info {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t dev_id;
|
||||
uint32_t dev_cap;
|
||||
char dev_name[64];
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_snd_device_list {
|
||||
uint32_t num_dev;
|
||||
struct msm_snd_device_info *list;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_dtmf_config {
|
||||
uint16_t path;
|
||||
uint16_t dtmf_hi;
|
||||
uint16_t dtmf_low;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint16_t duration;
|
||||
uint16_t tx_gain;
|
||||
uint16_t rx_gain;
|
||||
uint16_t mixing;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#define AUDIO_ROUTE_STREAM_VOICE_RX 0
|
||||
#define AUDIO_ROUTE_STREAM_VOICE_TX 1
|
||||
#define AUDIO_ROUTE_STREAM_PLAYBACK 2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_ROUTE_STREAM_REC 3
|
||||
struct msm_audio_route_config {
|
||||
uint32_t stream_type;
|
||||
uint32_t stream_id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t dev_id;
|
||||
};
|
||||
#define AUDIO_MAX_EQ_BANDS 12
|
||||
struct msm_audio_eq_band {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint16_t band_idx;
|
||||
uint32_t filter_type;
|
||||
uint32_t center_freq_hz;
|
||||
uint32_t filter_gain;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t q_factor;
|
||||
} __attribute__ ((packed));
|
||||
struct msm_audio_eq_stream_config {
|
||||
uint32_t enable;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t num_bands;
|
||||
struct msm_audio_eq_band eq_bands[AUDIO_MAX_EQ_BANDS];
|
||||
} __attribute__ ((packed));
|
||||
struct msm_acdb_cmd_device {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t command_id;
|
||||
uint32_t device_id;
|
||||
uint32_t network_id;
|
||||
uint32_t sample_rate_id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t interface_id;
|
||||
uint32_t algorithm_block_id;
|
||||
uint32_t total_bytes;
|
||||
uint32_t *phys_buf;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#endif
|
@@ -1,79 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __MSM_AUDIO_AAC_H
|
||||
#define __MSM_AUDIO_AAC_H
|
||||
#include <linux/msm_audio.h>
|
||||
#define AUDIO_SET_AAC_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+0), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_GET_AAC_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+1), unsigned)
|
||||
#define AUDIO_SET_AAC_ENC_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+3), struct msm_audio_aac_enc_config)
|
||||
#define AUDIO_GET_AAC_ENC_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+4), struct msm_audio_aac_enc_config)
|
||||
#define AUDIO_AAC_FORMAT_ADTS -1
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_AAC_FORMAT_RAW 0x0000
|
||||
#define AUDIO_AAC_FORMAT_PSUEDO_RAW 0x0001
|
||||
#define AUDIO_AAC_FORMAT_LOAS 0x0002
|
||||
#define AUDIO_AAC_FORMAT_ADIF 0x0003
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_AAC_OBJECT_LC 0x0002
|
||||
#define AUDIO_AAC_OBJECT_LTP 0x0004
|
||||
#define AUDIO_AAC_OBJECT_ERLC 0x0011
|
||||
#define AUDIO_AAC_OBJECT_BSAC 0x0016
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_AAC_SEC_DATA_RES_ON 0x0001
|
||||
#define AUDIO_AAC_SEC_DATA_RES_OFF 0x0000
|
||||
#define AUDIO_AAC_SCA_DATA_RES_ON 0x0001
|
||||
#define AUDIO_AAC_SCA_DATA_RES_OFF 0x0000
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_AAC_SPEC_DATA_RES_ON 0x0001
|
||||
#define AUDIO_AAC_SPEC_DATA_RES_OFF 0x0000
|
||||
#define AUDIO_AAC_SBR_ON_FLAG_ON 0x0001
|
||||
#define AUDIO_AAC_SBR_ON_FLAG_OFF 0x0000
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_AAC_SBR_PS_ON_FLAG_ON 0x0001
|
||||
#define AUDIO_AAC_SBR_PS_ON_FLAG_OFF 0x0000
|
||||
#define AUDIO_AAC_DUAL_MONO_PL_PR 0
|
||||
#define AUDIO_AAC_DUAL_MONO_SL_SR 1
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_AAC_DUAL_MONO_SL_PR 2
|
||||
#define AUDIO_AAC_DUAL_MONO_PL_SR 3
|
||||
struct msm_audio_aac_config {
|
||||
signed short format;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned short audio_object;
|
||||
unsigned short ep_config;
|
||||
unsigned short aac_section_data_resilience_flag;
|
||||
unsigned short aac_scalefactor_data_resilience_flag;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned short aac_spectral_data_resilience_flag;
|
||||
unsigned short sbr_on_flag;
|
||||
unsigned short sbr_ps_on_flag;
|
||||
unsigned short dual_mono_mode;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned short channel_configuration;
|
||||
};
|
||||
struct msm_audio_aac_enc_config {
|
||||
uint32_t channels;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t sample_rate;
|
||||
uint32_t bit_rate;
|
||||
uint32_t stream_format;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#endif
|
@@ -1,70 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __MSM_AUDIO_ACDB_H
|
||||
#define __MSM_AUDIO_ACDB_H
|
||||
#include <linux/msm_audio.h>
|
||||
#define AUDIO_SET_VOCPROC_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+0), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_VOCPROC_STREAM_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+1), unsigned)
|
||||
#define AUDIO_SET_VOCPROC_VOL_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+2), unsigned)
|
||||
#define AUDIO_SET_AUDPROC_RX_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+3), unsigned)
|
||||
#define AUDIO_SET_AUDPROC_RX_STREAM_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+4), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_AUDPROC_RX_VOL_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+5), unsigned)
|
||||
#define AUDIO_SET_AUDPROC_TX_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+6), unsigned)
|
||||
#define AUDIO_SET_AUDPROC_TX_STREAM_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+7), unsigned)
|
||||
#define AUDIO_SET_AUDPROC_TX_VOL_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+8), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_SIDETONE_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+9), unsigned)
|
||||
#define AUDIO_SET_ANC_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+10), unsigned)
|
||||
#define AUDIO_SET_VOICE_RX_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+11), unsigned)
|
||||
#define AUDIO_SET_VOICE_TX_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+12), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_ADM_RX_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+13), unsigned)
|
||||
#define AUDIO_SET_ADM_TX_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+14), unsigned)
|
||||
#define AUDIO_SET_ASM_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+15), unsigned)
|
||||
#define AUDIO_SET_AFE_TX_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+16), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_SET_AFE_RX_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+17), unsigned)
|
||||
#define AUDIO_MAX_ACDB_IOCTL (AUDIO_MAX_COMMON_IOCTL_NUM+30)
|
||||
struct cal_block {
|
||||
uint32_t cal_size;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t cal_offset;
|
||||
};
|
||||
struct sidetone_cal {
|
||||
uint16_t enable;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint16_t gain;
|
||||
};
|
||||
#define AUDIO_GET_RTAC_ADM_INFO _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+1), unsigned)
|
||||
#define AUDIO_GET_RTAC_VOICE_INFO _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+2), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_GET_RTAC_ADM_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+3), unsigned)
|
||||
#define AUDIO_SET_RTAC_ADM_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+4), unsigned)
|
||||
#define AUDIO_GET_RTAC_ASM_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+5), unsigned)
|
||||
#define AUDIO_SET_RTAC_ASM_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+6), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_GET_RTAC_CVS_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+7), unsigned)
|
||||
#define AUDIO_SET_RTAC_CVS_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+8), unsigned)
|
||||
#define AUDIO_GET_RTAC_CVP_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+9), unsigned)
|
||||
#define AUDIO_SET_RTAC_CVP_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+10), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_MAX_RTAC_IOCTL (AUDIO_MAX_ACDB_IOCTL+20)
|
||||
#endif
|
@@ -1,48 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __MSM_AUDIO_WMA_H
|
||||
#define __MSM_AUDIO_WMA_H
|
||||
#define AUDIO_GET_WMA_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+0), unsigned)
|
||||
#define AUDIO_SET_WMA_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+1), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define AUDIO_GET_WMA_CONFIG_V2 _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+2), struct msm_audio_wma_config_v2)
|
||||
#define AUDIO_SET_WMA_CONFIG_V2 _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+3), struct msm_audio_wma_config_v2)
|
||||
struct msm_audio_wma_config {
|
||||
unsigned short armdatareqthr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned short channelsdecoded;
|
||||
unsigned short wmabytespersec;
|
||||
unsigned short wmasamplingfreq;
|
||||
unsigned short wmaencoderopts;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct msm_audio_wma_config_v2 {
|
||||
unsigned short format_tag;
|
||||
unsigned short numchannels;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t samplingrate;
|
||||
uint32_t avgbytespersecond;
|
||||
unsigned short block_align;
|
||||
unsigned short validbitspersample;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t channelmask;
|
||||
unsigned short encodeopt;
|
||||
};
|
||||
#endif
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
@@ -1,40 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __MSM_AUDIO_WMAPRO_H
|
||||
#define __MSM_AUDIO_WMAPRO_H
|
||||
#define AUDIO_GET_WMAPRO_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+0), unsigned)
|
||||
#define AUDIO_SET_WMAPRO_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+1), unsigned)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_audio_wmapro_config {
|
||||
unsigned short armdatareqthr;
|
||||
uint8_t validbitspersample;
|
||||
uint8_t numchannels;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned short formattag;
|
||||
unsigned short samplingrate;
|
||||
unsigned short avgbytespersecond;
|
||||
unsigned short asfpacketlength;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned short channelmask;
|
||||
unsigned short encodeopt;
|
||||
unsigned short advancedencodeopt;
|
||||
uint32_t advancedencodeopt2;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#endif
|
@@ -1,38 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _ARCH_ARM_MACH_MSM_MDM_IOCTLS_H
|
||||
#define _ARXH_ARM_MACH_MSM_MDM_IOCTLS_H
|
||||
#define CHARM_CODE 0xCC
|
||||
#define WAKE_CHARM _IO(CHARM_CODE, 1)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define RESET_CHARM _IO(CHARM_CODE, 2)
|
||||
#define CHECK_FOR_BOOT _IOR(CHARM_CODE, 3, int)
|
||||
#define WAIT_FOR_BOOT _IO(CHARM_CODE, 4)
|
||||
#define NORMAL_BOOT_DONE _IOW(CHARM_CODE, 5, int)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define RAM_DUMP_DONE _IOW(CHARM_CODE, 6, int)
|
||||
#define WAIT_FOR_RESTART _IOR(CHARM_CODE, 7, int)
|
||||
#define GET_DLOAD_STATUS _IOR(CHARM_CODE, 8, int)
|
||||
enum charm_boot_type {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
CHARM_NORMAL_BOOT = 0,
|
||||
CHARM_RAM_DUMPS,
|
||||
};
|
||||
#endif
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
@@ -1,30 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _DSPS_H_
|
||||
#define _DSPS_H_
|
||||
#include <linux/ioctl.h>
|
||||
#define DSPS_IOCTL_MAGIC 'd'
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define DSPS_IOCTL_ON _IO(DSPS_IOCTL_MAGIC, 1)
|
||||
#define DSPS_IOCTL_OFF _IO(DSPS_IOCTL_MAGIC, 2)
|
||||
#define DSPS_IOCTL_READ_SLOW_TIMER _IOR(DSPS_IOCTL_MAGIC, 3, unsigned int*)
|
||||
#define DSPS_IOCTL_READ_FAST_TIMER _IOR(DSPS_IOCTL_MAGIC, 4, unsigned int*)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define DSPS_IOCTL_RESET _IO(DSPS_IOCTL_MAGIC, 5)
|
||||
#endif
|
@@ -1,48 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _MSM_HW3D_H_
|
||||
#define _MSM_HW3D_H_
|
||||
#include <linux/fs.h>
|
||||
#include <linux/ioctl.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct hw3d_region;
|
||||
#define HW3D_IOCTL_MAGIC 'h'
|
||||
#define HW3D_WAIT_FOR_REVOKE _IO(HW3D_IOCTL_MAGIC, 0x80)
|
||||
#define HW3D_WAIT_FOR_INTERRUPT _IO(HW3D_IOCTL_MAGIC, 0x81)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define HW3D_GET_REGIONS _IOR(HW3D_IOCTL_MAGIC, 0x82, struct hw3d_region *)
|
||||
#define HW3D_REGION_OFFSET(id) ((((uint32_t)(id)) & 0xf) << 28)
|
||||
#define HW3D_REGION_ID(addr) (((uint32_t)(addr) >> 28) & 0xf)
|
||||
#define HW3D_OFFSET_IN_REGION(addr) ((uint32_t)(addr) & ~(0xfUL << 28))
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum {
|
||||
HW3D_EBI = 0,
|
||||
HW3D_SMI = 1,
|
||||
HW3D_REGS = 2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
HW3D_NUM_REGIONS = HW3D_REGS + 1,
|
||||
};
|
||||
struct hw3d_region {
|
||||
unsigned long phys;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long map_offset;
|
||||
unsigned long len;
|
||||
};
|
||||
#endif
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
@@ -1,105 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __LINUX_MSM_ION_H__
|
||||
#define __LINUX_MSM_ION_H__
|
||||
#include <linux/ion.h>
|
||||
enum msm_ion_heap_types {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
ION_HEAP_TYPE_IOMMU = ION_HEAP_TYPE_CUSTOM + 1,
|
||||
ION_HEAP_TYPE_CP = ION_HEAP_TYPE_CUSTOM + 2,
|
||||
};
|
||||
enum ion_heap_ids {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
INVALID_HEAP_ID = -1,
|
||||
ION_CP_MM_HEAP_ID = 8,
|
||||
ION_CP_MFC_HEAP_ID = 12,
|
||||
ION_CP_WB_HEAP_ID = 16,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
ION_CAMERA_HEAP_ID = 20,
|
||||
ION_SF_HEAP_ID = 24,
|
||||
ION_IOMMU_HEAP_ID = 25,
|
||||
ION_QSECOM_HEAP_ID = 27,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
ION_AUDIO_HEAP_ID = 28,
|
||||
ION_MM_FIRMWARE_HEAP_ID = 29,
|
||||
ION_SYSTEM_HEAP_ID = 30,
|
||||
ION_HEAP_ID_RESERVED = 31
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum ion_fixed_position {
|
||||
NOT_FIXED,
|
||||
FIXED_LOW,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
FIXED_MIDDLE,
|
||||
FIXED_HIGH,
|
||||
};
|
||||
enum cp_mem_usage {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VIDEO_BITSTREAM = 0x1,
|
||||
VIDEO_PIXEL = 0x2,
|
||||
VIDEO_NONPIXEL = 0x3,
|
||||
MAX_USAGE = 0x4,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
UNKNOWN = 0x7FFFFFFF,
|
||||
};
|
||||
#define ION_HEAP_CP_MASK (1 << ION_HEAP_TYPE_CP)
|
||||
#define ION_SECURE (1 << ION_HEAP_ID_RESERVED)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ION_HEAP(bit) (1 << (bit))
|
||||
#define ION_VMALLOC_HEAP_NAME "vmalloc"
|
||||
#define ION_AUDIO_HEAP_NAME "audio"
|
||||
#define ION_SF_HEAP_NAME "sf"
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ION_MM_HEAP_NAME "mm"
|
||||
#define ION_CAMERA_HEAP_NAME "camera_preview"
|
||||
#define ION_IOMMU_HEAP_NAME "iommu"
|
||||
#define ION_MFC_HEAP_NAME "mfc"
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ION_WB_HEAP_NAME "wb"
|
||||
#define ION_MM_FIRMWARE_HEAP_NAME "mm_fw"
|
||||
#define ION_QSECOM_HEAP_NAME "qsecom"
|
||||
#define ION_FMEM_HEAP_NAME "fmem"
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define CACHED 1
|
||||
#define UNCACHED 0
|
||||
#define ION_CACHE_SHIFT 0
|
||||
#define ION_SET_CACHE(__cache) ((__cache) << ION_CACHE_SHIFT)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ION_IS_CACHED(__flags) ((__flags) & (1 << ION_CACHE_SHIFT))
|
||||
struct ion_flush_data {
|
||||
struct ion_handle *handle;
|
||||
int fd;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
void *vaddr;
|
||||
unsigned int offset;
|
||||
unsigned int length;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct ion_flag_data {
|
||||
struct ion_handle *handle;
|
||||
unsigned long flags;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ION_IOC_CLEAN_CACHES _IOWR(ION_IOC_MAGIC, 20, struct ion_flush_data)
|
||||
#define ION_IOC_INV_CACHES _IOWR(ION_IOC_MAGIC, 21, struct ion_flush_data)
|
||||
#define ION_IOC_CLEAN_INV_CACHES _IOWR(ION_IOC_MAGIC, 22, struct ion_flush_data)
|
||||
#define ION_IOC_GET_FLAGS _IOWR(ION_IOC_MAGIC, 23, struct ion_flag_data)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#endif
|
||||
|
@@ -1,365 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _MSM_KGSL_H
|
||||
#define _MSM_KGSL_H
|
||||
#define KGSL_VERSION_MAJOR 3
|
||||
#define KGSL_VERSION_MINOR 12
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define KGSL_CONTEXT_SAVE_GMEM 0x00000001
|
||||
#define KGSL_CONTEXT_NO_GMEM_ALLOC 0x00000002
|
||||
#define KGSL_CONTEXT_SUBMIT_IB_LIST 0x00000004
|
||||
#define KGSL_CONTEXT_CTX_SWITCH 0x00000008
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define KGSL_CONTEXT_PREAMBLE 0x00000010
|
||||
#define KGSL_CONTEXT_TRASH_STATE 0x00000020
|
||||
#define KGSL_CONTEXT_PER_CONTEXT_TS 0x00000040
|
||||
#define KGSL_CONTEXT_INVALID 0xffffffff
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define KGSL_MEMFLAGS_GPUREADONLY 0x01000000
|
||||
#define KGSL_FLAGS_NORMALMODE 0x00000000
|
||||
#define KGSL_FLAGS_SAFEMODE 0x00000001
|
||||
#define KGSL_FLAGS_INITIALIZED0 0x00000002
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define KGSL_FLAGS_INITIALIZED 0x00000004
|
||||
#define KGSL_FLAGS_STARTED 0x00000008
|
||||
#define KGSL_FLAGS_ACTIVE 0x00000010
|
||||
#define KGSL_FLAGS_RESERVED0 0x00000020
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define KGSL_FLAGS_RESERVED1 0x00000040
|
||||
#define KGSL_FLAGS_RESERVED2 0x00000080
|
||||
#define KGSL_FLAGS_SOFT_RESET 0x00000100
|
||||
#define KGSL_FLAGS_PER_CONTEXT_TIMESTAMPS 0x00000200
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define KGSL_CLK_SRC 0x00000001
|
||||
#define KGSL_CLK_CORE 0x00000002
|
||||
#define KGSL_CLK_IFACE 0x00000004
|
||||
#define KGSL_CLK_MEM 0x00000008
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define KGSL_CLK_MEM_IFACE 0x00000010
|
||||
#define KGSL_CLK_AXI 0x00000020
|
||||
enum kgsl_ctx_reset_stat {
|
||||
KGSL_CTX_STAT_NO_ERROR = 0x00000000,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
KGSL_CTX_STAT_GUILTY_CONTEXT_RESET_EXT = 0x00000001,
|
||||
KGSL_CTX_STAT_INNOCENT_CONTEXT_RESET_EXT = 0x00000002,
|
||||
KGSL_CTX_STAT_UNKNOWN_CONTEXT_RESET_EXT = 0x00000003
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define KGSL_CONVERT_TO_MBPS(val) (val*1000*1000U)
|
||||
enum kgsl_deviceid {
|
||||
KGSL_DEVICE_3D0 = 0x00000000,
|
||||
KGSL_DEVICE_2D0 = 0x00000001,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
KGSL_DEVICE_2D1 = 0x00000002,
|
||||
KGSL_DEVICE_MAX = 0x00000003
|
||||
};
|
||||
enum kgsl_user_mem_type {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
KGSL_USER_MEM_TYPE_PMEM = 0x00000000,
|
||||
KGSL_USER_MEM_TYPE_ASHMEM = 0x00000001,
|
||||
KGSL_USER_MEM_TYPE_ADDR = 0x00000002,
|
||||
KGSL_USER_MEM_TYPE_ION = 0x00000003,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
KGSL_USER_MEM_TYPE_MAX = 0x00000004,
|
||||
};
|
||||
struct kgsl_devinfo {
|
||||
unsigned int device_id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int chip_id;
|
||||
unsigned int mmu_enabled;
|
||||
unsigned int gmem_gpubaseaddr;
|
||||
unsigned int gpu_id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int gmem_sizebytes;
|
||||
};
|
||||
struct kgsl_devmemstore {
|
||||
volatile unsigned int soptimestamp;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int sbz;
|
||||
volatile unsigned int eoptimestamp;
|
||||
unsigned int sbz2;
|
||||
volatile unsigned int ts_cmp_enable;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int sbz3;
|
||||
volatile unsigned int ref_wait_ts;
|
||||
unsigned int sbz4;
|
||||
unsigned int current_context;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int sbz5;
|
||||
};
|
||||
#define KGSL_MEMSTORE_OFFSET(ctxt_id, field) ((ctxt_id)*sizeof(struct kgsl_devmemstore) + offsetof(struct kgsl_devmemstore, field))
|
||||
enum kgsl_timestamp_type {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
KGSL_TIMESTAMP_CONSUMED = 0x00000001,
|
||||
KGSL_TIMESTAMP_RETIRED = 0x00000002,
|
||||
KGSL_TIMESTAMP_QUEUED = 0x00000003,
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum kgsl_property_type {
|
||||
KGSL_PROP_DEVICE_INFO = 0x00000001,
|
||||
KGSL_PROP_DEVICE_SHADOW = 0x00000002,
|
||||
KGSL_PROP_DEVICE_POWER = 0x00000003,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
KGSL_PROP_SHMEM = 0x00000004,
|
||||
KGSL_PROP_SHMEM_APERTURES = 0x00000005,
|
||||
KGSL_PROP_MMU_ENABLE = 0x00000006,
|
||||
KGSL_PROP_INTERRUPT_WAITS = 0x00000007,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
KGSL_PROP_VERSION = 0x00000008,
|
||||
KGSL_PROP_GPU_RESET_STAT = 0x00000009,
|
||||
KGSL_PROP_PWRCTRL = 0x0000000E,
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct kgsl_shadowprop {
|
||||
unsigned int gpuaddr;
|
||||
unsigned int size;
|
||||
unsigned int flags;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct kgsl_version {
|
||||
unsigned int drv_major;
|
||||
unsigned int drv_minor;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int dev_major;
|
||||
unsigned int dev_minor;
|
||||
};
|
||||
struct kgsl_ibdesc {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int gpuaddr;
|
||||
void *hostptr;
|
||||
unsigned int sizedwords;
|
||||
unsigned int ctrl;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#define KGSL_IOC_TYPE 0x09
|
||||
struct kgsl_device_getproperty {
|
||||
unsigned int type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
void *value;
|
||||
unsigned int sizebytes;
|
||||
};
|
||||
#define IOCTL_KGSL_DEVICE_GETPROPERTY _IOWR(KGSL_IOC_TYPE, 0x2, struct kgsl_device_getproperty)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct kgsl_device_waittimestamp {
|
||||
unsigned int timestamp;
|
||||
unsigned int timeout;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_DEVICE_WAITTIMESTAMP _IOW(KGSL_IOC_TYPE, 0x6, struct kgsl_device_waittimestamp)
|
||||
struct kgsl_device_waittimestamp_ctxtid {
|
||||
unsigned int context_id;
|
||||
unsigned int timestamp;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int timeout;
|
||||
};
|
||||
#define IOCTL_KGSL_DEVICE_WAITTIMESTAMP_CTXTID _IOW(KGSL_IOC_TYPE, 0x7, struct kgsl_device_waittimestamp_ctxtid)
|
||||
struct kgsl_ringbuffer_issueibcmds {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int drawctxt_id;
|
||||
unsigned int ibdesc_addr;
|
||||
unsigned int numibs;
|
||||
unsigned int timestamp;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int flags;
|
||||
};
|
||||
#define IOCTL_KGSL_RINGBUFFER_ISSUEIBCMDS _IOWR(KGSL_IOC_TYPE, 0x10, struct kgsl_ringbuffer_issueibcmds)
|
||||
struct kgsl_cmdstream_readtimestamp {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int type;
|
||||
unsigned int timestamp;
|
||||
};
|
||||
#define IOCTL_KGSL_CMDSTREAM_READTIMESTAMP_OLD _IOR(KGSL_IOC_TYPE, 0x11, struct kgsl_cmdstream_readtimestamp)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_CMDSTREAM_READTIMESTAMP _IOWR(KGSL_IOC_TYPE, 0x11, struct kgsl_cmdstream_readtimestamp)
|
||||
struct kgsl_cmdstream_freememontimestamp {
|
||||
unsigned int gpuaddr;
|
||||
unsigned int type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int timestamp;
|
||||
};
|
||||
#define IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP _IOW(KGSL_IOC_TYPE, 0x12, struct kgsl_cmdstream_freememontimestamp)
|
||||
#define IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP_OLD _IOR(KGSL_IOC_TYPE, 0x12, struct kgsl_cmdstream_freememontimestamp)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct kgsl_drawctxt_create {
|
||||
unsigned int flags;
|
||||
unsigned int drawctxt_id;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_DRAWCTXT_CREATE _IOWR(KGSL_IOC_TYPE, 0x13, struct kgsl_drawctxt_create)
|
||||
struct kgsl_drawctxt_destroy {
|
||||
unsigned int drawctxt_id;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_DRAWCTXT_DESTROY _IOW(KGSL_IOC_TYPE, 0x14, struct kgsl_drawctxt_destroy)
|
||||
struct kgsl_map_user_mem {
|
||||
int fd;
|
||||
unsigned int gpuaddr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int len;
|
||||
unsigned int offset;
|
||||
unsigned int hostptr;
|
||||
enum kgsl_user_mem_type memtype;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int reserved;
|
||||
};
|
||||
#define IOCTL_KGSL_MAP_USER_MEM _IOWR(KGSL_IOC_TYPE, 0x15, struct kgsl_map_user_mem)
|
||||
struct kgsl_cmdstream_readtimestamp_ctxtid {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int context_id;
|
||||
unsigned int type;
|
||||
unsigned int timestamp;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_CMDSTREAM_READTIMESTAMP_CTXTID _IOWR(KGSL_IOC_TYPE, 0x16, struct kgsl_cmdstream_readtimestamp_ctxtid)
|
||||
struct kgsl_cmdstream_freememontimestamp_ctxtid {
|
||||
unsigned int context_id;
|
||||
unsigned int gpuaddr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int type;
|
||||
unsigned int timestamp;
|
||||
};
|
||||
#define IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP_CTXTID _IOW(KGSL_IOC_TYPE, 0x17, struct kgsl_cmdstream_freememontimestamp_ctxtid)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct kgsl_sharedmem_from_pmem {
|
||||
int pmem_fd;
|
||||
unsigned int gpuaddr;
|
||||
unsigned int len;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int offset;
|
||||
};
|
||||
#define IOCTL_KGSL_SHAREDMEM_FROM_PMEM _IOWR(KGSL_IOC_TYPE, 0x20, struct kgsl_sharedmem_from_pmem)
|
||||
struct kgsl_sharedmem_free {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int gpuaddr;
|
||||
};
|
||||
#define IOCTL_KGSL_SHAREDMEM_FREE _IOW(KGSL_IOC_TYPE, 0x21, struct kgsl_sharedmem_free)
|
||||
struct kgsl_cff_user_event {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned char cff_opcode;
|
||||
unsigned int op1;
|
||||
unsigned int op2;
|
||||
unsigned int op3;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int op4;
|
||||
unsigned int op5;
|
||||
unsigned int __pad[2];
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_CFF_USER_EVENT _IOW(KGSL_IOC_TYPE, 0x31, struct kgsl_cff_user_event)
|
||||
struct kgsl_gmem_desc {
|
||||
unsigned int x;
|
||||
unsigned int y;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
unsigned int pitch;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct kgsl_buffer_desc {
|
||||
void *hostptr;
|
||||
unsigned int gpuaddr;
|
||||
int size;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int format;
|
||||
unsigned int pitch;
|
||||
unsigned int enabled;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct kgsl_bind_gmem_shadow {
|
||||
unsigned int drawctxt_id;
|
||||
struct kgsl_gmem_desc gmem_desc;
|
||||
unsigned int shadow_x;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int shadow_y;
|
||||
struct kgsl_buffer_desc shadow_buffer;
|
||||
unsigned int buffer_id;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_DRAWCTXT_BIND_GMEM_SHADOW _IOW(KGSL_IOC_TYPE, 0x22, struct kgsl_bind_gmem_shadow)
|
||||
struct kgsl_sharedmem_from_vmalloc {
|
||||
unsigned int gpuaddr;
|
||||
unsigned int hostptr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int flags;
|
||||
};
|
||||
#define IOCTL_KGSL_SHAREDMEM_FROM_VMALLOC _IOWR(KGSL_IOC_TYPE, 0x23, struct kgsl_sharedmem_from_vmalloc)
|
||||
#define IOCTL_KGSL_SHAREDMEM_FLUSH_CACHE _IOW(KGSL_IOC_TYPE, 0x24, struct kgsl_sharedmem_free)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct kgsl_drawctxt_set_bin_base_offset {
|
||||
unsigned int drawctxt_id;
|
||||
unsigned int offset;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_DRAWCTXT_SET_BIN_BASE_OFFSET _IOW(KGSL_IOC_TYPE, 0x25, struct kgsl_drawctxt_set_bin_base_offset)
|
||||
enum kgsl_cmdwindow_type {
|
||||
KGSL_CMDWINDOW_MIN = 0x00000000,
|
||||
KGSL_CMDWINDOW_2D = 0x00000000,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
KGSL_CMDWINDOW_3D = 0x00000001,
|
||||
KGSL_CMDWINDOW_MMU = 0x00000002,
|
||||
KGSL_CMDWINDOW_ARBITER = 0x000000FF,
|
||||
KGSL_CMDWINDOW_MAX = 0x000000FF,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct kgsl_cmdwindow_write {
|
||||
enum kgsl_cmdwindow_type target;
|
||||
unsigned int addr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int data;
|
||||
};
|
||||
#define IOCTL_KGSL_CMDWINDOW_WRITE _IOW(KGSL_IOC_TYPE, 0x2e, struct kgsl_cmdwindow_write)
|
||||
struct kgsl_gpumem_alloc {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long gpuaddr;
|
||||
size_t size;
|
||||
unsigned int flags;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_GPUMEM_ALLOC _IOWR(KGSL_IOC_TYPE, 0x2f, struct kgsl_gpumem_alloc)
|
||||
struct kgsl_cff_syncmem {
|
||||
unsigned int gpuaddr;
|
||||
unsigned int len;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int __pad[2];
|
||||
};
|
||||
#define IOCTL_KGSL_CFF_SYNCMEM _IOW(KGSL_IOC_TYPE, 0x30, struct kgsl_cff_syncmem)
|
||||
struct kgsl_timestamp_event {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int type;
|
||||
unsigned int timestamp;
|
||||
unsigned int context_id;
|
||||
void *priv;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
size_t len;
|
||||
};
|
||||
#define IOCTL_KGSL_TIMESTAMP_EVENT_OLD _IOW(KGSL_IOC_TYPE, 0x31, struct kgsl_timestamp_event)
|
||||
#define KGSL_TIMESTAMP_EVENT_GENLOCK 1
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct kgsl_timestamp_event_genlock {
|
||||
int handle;
|
||||
};
|
||||
#define KGSL_TIMESTAMP_EVENT_FENCE 2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct kgsl_timestamp_event_fence {
|
||||
int fence_fd;
|
||||
};
|
||||
#define IOCTL_KGSL_SETPROPERTY _IOW(KGSL_IOC_TYPE, 0x32, struct kgsl_device_getproperty)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IOCTL_KGSL_TIMESTAMP_EVENT _IOWR(KGSL_IOC_TYPE, 0x33, struct kgsl_timestamp_event)
|
||||
#endif
|
@@ -1,530 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _MSM_MDP_H_
|
||||
#define _MSM_MDP_H_
|
||||
#include <linux/types.h>
|
||||
#include <linux/fb.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_IOCTL_MAGIC 'm'
|
||||
#define MSMFB_GRP_DISP _IOW(MSMFB_IOCTL_MAGIC, 1, unsigned int)
|
||||
#define MSMFB_BLIT _IOW(MSMFB_IOCTL_MAGIC, 2, unsigned int)
|
||||
#define MSMFB_SUSPEND_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 128, unsigned int)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_RESUME_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 129, unsigned int)
|
||||
#define MSMFB_CURSOR _IOW(MSMFB_IOCTL_MAGIC, 130, struct fb_cursor)
|
||||
#define MSMFB_SET_LUT _IOW(MSMFB_IOCTL_MAGIC, 131, struct fb_cmap)
|
||||
#define MSMFB_HISTOGRAM _IOWR(MSMFB_IOCTL_MAGIC, 132, struct mdp_histogram_data)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_GET_CCS_MATRIX _IOWR(MSMFB_IOCTL_MAGIC, 133, struct mdp_ccs)
|
||||
#define MSMFB_SET_CCS_MATRIX _IOW(MSMFB_IOCTL_MAGIC, 134, struct mdp_ccs)
|
||||
#define MSMFB_OVERLAY_SET _IOWR(MSMFB_IOCTL_MAGIC, 135, struct mdp_overlay)
|
||||
#define MSMFB_OVERLAY_UNSET _IOW(MSMFB_IOCTL_MAGIC, 136, unsigned int)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_OVERLAY_PLAY _IOW(MSMFB_IOCTL_MAGIC, 137, struct msmfb_overlay_data)
|
||||
#define MSMFB_OVERLAY_QUEUE MSMFB_OVERLAY_PLAY
|
||||
#define MSMFB_GET_PAGE_PROTECTION _IOR(MSMFB_IOCTL_MAGIC, 138, struct mdp_page_protection)
|
||||
#define MSMFB_SET_PAGE_PROTECTION _IOW(MSMFB_IOCTL_MAGIC, 139, struct mdp_page_protection)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_OVERLAY_GET _IOR(MSMFB_IOCTL_MAGIC, 140, struct mdp_overlay)
|
||||
#define MSMFB_OVERLAY_PLAY_ENABLE _IOW(MSMFB_IOCTL_MAGIC, 141, unsigned int)
|
||||
#define MSMFB_OVERLAY_BLT _IOWR(MSMFB_IOCTL_MAGIC, 142, struct msmfb_overlay_blt)
|
||||
#define MSMFB_OVERLAY_BLT_OFFSET _IOW(MSMFB_IOCTL_MAGIC, 143, unsigned int)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_HISTOGRAM_START _IOR(MSMFB_IOCTL_MAGIC, 144, struct mdp_histogram_start_req)
|
||||
#define MSMFB_HISTOGRAM_STOP _IOR(MSMFB_IOCTL_MAGIC, 145, unsigned int)
|
||||
#define MSMFB_NOTIFY_UPDATE _IOW(MSMFB_IOCTL_MAGIC, 146, unsigned int)
|
||||
#define MSMFB_OVERLAY_3D _IOWR(MSMFB_IOCTL_MAGIC, 147, struct msmfb_overlay_3d)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_MIXER_INFO _IOWR(MSMFB_IOCTL_MAGIC, 148, struct msmfb_mixer_info_req)
|
||||
#define MSMFB_OVERLAY_PLAY_WAIT _IOWR(MSMFB_IOCTL_MAGIC, 149, struct msmfb_overlay_data)
|
||||
#define MSMFB_WRITEBACK_INIT _IO(MSMFB_IOCTL_MAGIC, 150)
|
||||
#define MSMFB_WRITEBACK_START _IO(MSMFB_IOCTL_MAGIC, 151)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_WRITEBACK_STOP _IO(MSMFB_IOCTL_MAGIC, 152)
|
||||
#define MSMFB_WRITEBACK_QUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 153, struct msmfb_data)
|
||||
#define MSMFB_WRITEBACK_DEQUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 154, struct msmfb_data)
|
||||
#define MSMFB_WRITEBACK_TERMINATE _IO(MSMFB_IOCTL_MAGIC, 155)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_MDP_PP _IOWR(MSMFB_IOCTL_MAGIC, 156, struct msmfb_mdp_pp)
|
||||
#define MSMFB_OVERLAY_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 160, unsigned int)
|
||||
#define MSMFB_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 161, unsigned int)
|
||||
#define MSMFB_BUFFER_SYNC _IOW(MSMFB_IOCTL_MAGIC, 162, struct mdp_buf_sync)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_DISPLAY_COMMIT _IOW(MSMFB_IOCTL_MAGIC, 164, struct mdp_display_commit)
|
||||
#define FB_TYPE_3D_PANEL 0x10101010
|
||||
#define MDP_IMGTYPE2_START 0x10000
|
||||
#define MSMFB_DRIVER_VERSION 0xF9E8D701
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum {
|
||||
NOTIFY_UPDATE_START,
|
||||
NOTIFY_UPDATE_STOP,
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum {
|
||||
MDP_RGB_565,
|
||||
MDP_XRGB_8888,
|
||||
MDP_Y_CBCR_H2V2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_Y_CBCR_H2V2_ADRENO,
|
||||
MDP_ARGB_8888,
|
||||
MDP_RGB_888,
|
||||
MDP_Y_CRCB_H2V2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_YCRYCB_H2V1,
|
||||
MDP_Y_CRCB_H2V1,
|
||||
MDP_Y_CBCR_H2V1,
|
||||
MDP_Y_CRCB_H1V2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_Y_CBCR_H1V2,
|
||||
MDP_RGBA_8888,
|
||||
MDP_BGRA_8888,
|
||||
MDP_RGBX_8888,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_Y_CRCB_H2V2_TILE,
|
||||
MDP_Y_CBCR_H2V2_TILE,
|
||||
MDP_Y_CR_CB_H2V2,
|
||||
MDP_Y_CR_CB_GH2V2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_Y_CB_CR_H2V2,
|
||||
MDP_Y_CRCB_H1V1,
|
||||
MDP_Y_CBCR_H1V1,
|
||||
MDP_YCRCB_H1V1,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_YCBCR_H1V1,
|
||||
MDP_BGR_565,
|
||||
MDP_IMGTYPE_LIMIT,
|
||||
MDP_RGB_BORDERFILL,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_FB_FORMAT = MDP_IMGTYPE2_START,
|
||||
MDP_IMGTYPE_LIMIT2
|
||||
};
|
||||
enum {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
PMEM_IMG,
|
||||
FB_IMG,
|
||||
};
|
||||
enum {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
HSIC_HUE = 0,
|
||||
HSIC_SAT,
|
||||
HSIC_INT,
|
||||
HSIC_CON,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
NUM_HSIC_PARAM,
|
||||
};
|
||||
#define MDSS_MDP_ROT_ONLY 0x80
|
||||
#define MDSS_MDP_RIGHT_MIXER 0x100
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_ROT_NOP 0
|
||||
#define MDP_FLIP_LR 0x1
|
||||
#define MDP_FLIP_UD 0x2
|
||||
#define MDP_ROT_90 0x4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR)
|
||||
#define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR)
|
||||
#define MDP_DITHER 0x8
|
||||
#define MDP_BLUR 0x10
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_BLEND_FG_PREMULT 0x20000
|
||||
#define MDP_DEINTERLACE 0x80000000
|
||||
#define MDP_SHARPENING 0x40000000
|
||||
#define MDP_NO_DMA_BARRIER_START 0x20000000
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_NO_DMA_BARRIER_END 0x10000000
|
||||
#define MDP_NO_BLIT 0x08000000
|
||||
#define MDP_BLIT_WITH_DMA_BARRIERS 0x000
|
||||
#define MDP_BLIT_WITH_NO_DMA_BARRIERS (MDP_NO_DMA_BARRIER_START | MDP_NO_DMA_BARRIER_END)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_BLIT_SRC_GEM 0x04000000
|
||||
#define MDP_BLIT_DST_GEM 0x02000000
|
||||
#define MDP_BLIT_NON_CACHED 0x01000000
|
||||
#define MDP_OV_PIPE_SHARE 0x00800000
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_DEINTERLACE_ODD 0x00400000
|
||||
#define MDP_OV_PLAY_NOWAIT 0x00200000
|
||||
#define MDP_SOURCE_ROTATED_90 0x00100000
|
||||
#define MDP_OVERLAY_PP_CFG_EN 0x00080000
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_BACKEND_COMPOSITION 0x00040000
|
||||
#define MDP_BORDERFILL_SUPPORTED 0x00010000
|
||||
#define MDP_SECURE_OVERLAY_SESSION 0x00008000
|
||||
#define MDP_MEMORY_ID_TYPE_FB 0x00001000
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_TRANSP_NOP 0xffffffff
|
||||
#define MDP_ALPHA_NOP 0xff
|
||||
#define MDP_FB_PAGE_PROTECTION_NONCACHED (0)
|
||||
#define MDP_FB_PAGE_PROTECTION_WRITECOMBINE (1)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_FB_PAGE_PROTECTION_WRITETHROUGHCACHE (2)
|
||||
#define MDP_FB_PAGE_PROTECTION_WRITEBACKCACHE (3)
|
||||
#define MDP_FB_PAGE_PROTECTION_WRITEBACKWACACHE (4)
|
||||
#define MDP_FB_PAGE_PROTECTION_INVALID (5)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_NUM_FB_PAGE_PROTECTION_VALUES (5)
|
||||
struct mdp_rect {
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t w;
|
||||
uint32_t h;
|
||||
};
|
||||
struct mdp_img {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t format;
|
||||
uint32_t offset;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int memory_id;
|
||||
uint32_t priv;
|
||||
};
|
||||
#define MDP_CCS_RGB2YUV 0
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_CCS_YUV2RGB 1
|
||||
#define MDP_CCS_SIZE 9
|
||||
#define MDP_BV_SIZE 3
|
||||
struct mdp_ccs {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int direction;
|
||||
uint16_t ccs[MDP_CCS_SIZE];
|
||||
uint16_t bv[MDP_BV_SIZE];
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_csc {
|
||||
int id;
|
||||
uint32_t csc_mv[9];
|
||||
uint32_t csc_pre_bv[3];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t csc_post_bv[3];
|
||||
uint32_t csc_pre_lv[6];
|
||||
uint32_t csc_post_lv[6];
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_BLIT_REQ_VERSION 2
|
||||
struct mdp_blit_req {
|
||||
struct mdp_img src;
|
||||
struct mdp_img dst;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_rect src_rect;
|
||||
struct mdp_rect dst_rect;
|
||||
uint32_t alpha;
|
||||
uint32_t transp_mask;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t flags;
|
||||
int sharpening_strength;
|
||||
};
|
||||
struct mdp_blit_req_list {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t count;
|
||||
struct mdp_blit_req req[];
|
||||
};
|
||||
#define MSMFB_DATA_VERSION 2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msmfb_data {
|
||||
uint32_t offset;
|
||||
int memory_id;
|
||||
int id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t flags;
|
||||
uint32_t priv;
|
||||
uint32_t iova;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSMFB_NEW_REQUEST -1
|
||||
struct msmfb_overlay_data {
|
||||
uint32_t id;
|
||||
struct msmfb_data data;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t version_key;
|
||||
struct msmfb_data plane1_data;
|
||||
struct msmfb_data plane2_data;
|
||||
struct msmfb_data dst_data;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct msmfb_img {
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t format;
|
||||
};
|
||||
#define MSMFB_WRITEBACK_DEQUEUE_BLOCKING 0x1
|
||||
struct msmfb_writeback_data {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msmfb_data buf_info;
|
||||
struct msmfb_img img;
|
||||
};
|
||||
#define MDP_PP_OPS_READ 0x2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_PP_OPS_WRITE 0x4
|
||||
struct mdp_qseed_cfg {
|
||||
uint32_t table_num;
|
||||
uint32_t ops;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t len;
|
||||
uint32_t *data;
|
||||
};
|
||||
struct mdp_qseed_cfg_data {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t block;
|
||||
struct mdp_qseed_cfg qseed_data;
|
||||
};
|
||||
#define MDP_OVERLAY_PP_CSC_CFG 0x1
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_OVERLAY_PP_QSEED_CFG 0x2
|
||||
#define MDP_CSC_FLAG_ENABLE 0x1
|
||||
#define MDP_CSC_FLAG_YUV_IN 0x2
|
||||
#define MDP_CSC_FLAG_YUV_OUT 0x4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_csc_cfg {
|
||||
uint32_t flags;
|
||||
uint32_t csc_mv[9];
|
||||
uint32_t csc_pre_bv[3];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t csc_post_bv[3];
|
||||
uint32_t csc_pre_lv[6];
|
||||
uint32_t csc_post_lv[6];
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_csc_cfg_data {
|
||||
uint32_t block;
|
||||
struct mdp_csc_cfg csc_data;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_overlay_pp_params {
|
||||
uint32_t config_ops;
|
||||
struct mdp_csc_cfg csc_cfg;
|
||||
struct mdp_qseed_cfg qseed_cfg[2];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct mdp_overlay {
|
||||
struct msmfb_img src;
|
||||
struct mdp_rect src_rect;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_rect dst_rect;
|
||||
uint32_t z_order;
|
||||
uint32_t is_fg;
|
||||
uint32_t alpha;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t transp_mask;
|
||||
uint32_t flags;
|
||||
uint32_t id;
|
||||
uint32_t user_data[8];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_overlay_pp_params overlay_pp_cfg;
|
||||
};
|
||||
struct msmfb_overlay_3d {
|
||||
uint32_t is_3d;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
};
|
||||
struct msmfb_overlay_blt {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t enable;
|
||||
uint32_t offset;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t bpp;
|
||||
};
|
||||
struct mdp_histogram {
|
||||
uint32_t frame_cnt;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t bin_cnt;
|
||||
uint32_t *r;
|
||||
uint32_t *g;
|
||||
uint32_t *b;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum {
|
||||
MDP_BLOCK_RESERVED = 0,
|
||||
MDP_BLOCK_OVERLAY_0,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_BLOCK_OVERLAY_1,
|
||||
MDP_BLOCK_VG_1,
|
||||
MDP_BLOCK_VG_2,
|
||||
MDP_BLOCK_RGB_1,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_BLOCK_RGB_2,
|
||||
MDP_BLOCK_DMA_P,
|
||||
MDP_BLOCK_DMA_S,
|
||||
MDP_BLOCK_DMA_E,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
MDP_BLOCK_OVERLAY_2,
|
||||
MDP_BLOCK_MAX,
|
||||
};
|
||||
struct mdp_histogram_start_req {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t block;
|
||||
uint8_t frame_cnt;
|
||||
uint8_t bit_mask;
|
||||
uint8_t num_bins;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct mdp_histogram_data {
|
||||
uint32_t block;
|
||||
uint8_t bin_cnt;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t *c0;
|
||||
uint32_t *c1;
|
||||
uint32_t *c2;
|
||||
uint32_t *extra_info;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct mdp_pcc_coeff {
|
||||
uint32_t c, r, g, b, rr, gg, bb, rg, gb, rb, rgb_0, rgb_1;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_pcc_cfg_data {
|
||||
uint32_t block;
|
||||
uint32_t ops;
|
||||
struct mdp_pcc_coeff r, g, b;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum {
|
||||
mdp_lut_igc,
|
||||
mdp_lut_pgc,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
mdp_lut_hist,
|
||||
mdp_lut_max,
|
||||
};
|
||||
struct mdp_igc_lut_data {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t block;
|
||||
uint32_t len, ops;
|
||||
uint32_t *c0_c1_data;
|
||||
uint32_t *c2_data;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct mdp_ar_gc_lut_data {
|
||||
uint32_t x_start;
|
||||
uint32_t slope;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t offset;
|
||||
};
|
||||
struct mdp_pgc_lut_data {
|
||||
uint32_t block;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t flags;
|
||||
uint8_t num_r_stages;
|
||||
uint8_t num_g_stages;
|
||||
uint8_t num_b_stages;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_ar_gc_lut_data *r_data;
|
||||
struct mdp_ar_gc_lut_data *g_data;
|
||||
struct mdp_ar_gc_lut_data *b_data;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_hist_lut_data {
|
||||
uint32_t block;
|
||||
uint32_t ops;
|
||||
uint32_t len;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t *data;
|
||||
};
|
||||
struct mdp_lut_cfg_data {
|
||||
uint32_t lut_type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
union {
|
||||
struct mdp_igc_lut_data igc_lut_data;
|
||||
struct mdp_pgc_lut_data pgc_lut_data;
|
||||
struct mdp_hist_lut_data hist_lut_data;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
} data;
|
||||
};
|
||||
struct mdp_bl_scale_data {
|
||||
uint32_t min_lvl;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t scale;
|
||||
};
|
||||
enum {
|
||||
mdp_op_pcc_cfg,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
mdp_op_csc_cfg,
|
||||
mdp_op_lut_cfg,
|
||||
mdp_op_qseed_cfg,
|
||||
mdp_bl_scale_cfg,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
mdp_op_max,
|
||||
};
|
||||
struct msmfb_mdp_pp {
|
||||
uint32_t op;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
union {
|
||||
struct mdp_pcc_cfg_data pcc_cfg_data;
|
||||
struct mdp_csc_cfg_data csc_cfg_data;
|
||||
struct mdp_lut_cfg_data lut_cfg_data;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_qseed_cfg_data qseed_cfg_data;
|
||||
struct mdp_bl_scale_data bl_scale_data;
|
||||
} data;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MDP_MAX_FENCE_FD 10
|
||||
#define MDP_BUF_SYNC_FLAG_WAIT 1
|
||||
struct mdp_buf_sync {
|
||||
uint32_t flags;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t acq_fen_fd_cnt;
|
||||
int *acq_fen_fd;
|
||||
int *rel_fen_fd;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_buf_fence {
|
||||
uint32_t flags;
|
||||
uint32_t acq_fen_fd_cnt;
|
||||
int acq_fen_fd[MDP_MAX_FENCE_FD];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int rel_fen_fd[MDP_MAX_FENCE_FD];
|
||||
};
|
||||
#define MDP_DISPLAY_COMMIT_OVERLAY 0x00000001
|
||||
struct mdp_display_commit {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t flags;
|
||||
uint32_t wait_for_finish;
|
||||
struct fb_var_screeninfo var;
|
||||
struct mdp_buf_fence buf_fence;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct mdp_page_protection {
|
||||
uint32_t page_protection;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct mdp_mixer_info {
|
||||
int pndx;
|
||||
int pnum;
|
||||
int ptype;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int mixer_num;
|
||||
int z_order;
|
||||
};
|
||||
#define MAX_PIPE_PER_MIXER 4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msmfb_mixer_info_req {
|
||||
int mixer_num;
|
||||
int cnt;
|
||||
struct mdp_mixer_info info[MAX_PIPE_PER_MIXER];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum {
|
||||
DISPLAY_SUBSYSTEM_ID,
|
||||
ROTATOR_SUBSYSTEM_ID,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#endif
|
@@ -1,231 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _MSM_VDEC_H_
|
||||
#define _MSM_VDEC_H_
|
||||
#include <linux/types.h>
|
||||
#define VDEC_IOCTL_MAGIC 'v'
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_INITIALIZE _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init)
|
||||
#define VDEC_IOCTL_SETBUFFERS _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer)
|
||||
#define VDEC_IOCTL_QUEUE _IOWR(VDEC_IOCTL_MAGIC, 3, struct vdec_input_buf)
|
||||
#define VDEC_IOCTL_REUSEFRAMEBUFFER _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_FLUSH _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int)
|
||||
#define VDEC_IOCTL_EOS _IO(VDEC_IOCTL_MAGIC, 6)
|
||||
#define VDEC_IOCTL_GETMSG _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg)
|
||||
#define VDEC_IOCTL_CLOSE _IO(VDEC_IOCTL_MAGIC, 8)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_FREEBUFFERS _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info)
|
||||
#define VDEC_IOCTL_GETDECATTRIBUTES _IOR(VDEC_IOCTL_MAGIC, 10, struct vdec_dec_attributes)
|
||||
enum {
|
||||
VDEC_FRAME_DECODE_OK,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_FRAME_DECODE_ERR,
|
||||
VDEC_FATAL_ERR,
|
||||
VDEC_FLUSH_FINISH,
|
||||
VDEC_EOS,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_FRAME_FLUSH,
|
||||
VDEC_STREAM_SWITCH,
|
||||
VDEC_SUSPEND_FINISH,
|
||||
VDEC_BUFFER_CONSUMED
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum {
|
||||
VDEC_FLUSH_INPUT,
|
||||
VDEC_FLUSH_OUTPUT,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_FLUSH_ALL
|
||||
};
|
||||
enum {
|
||||
VDEC_BUFFER_TYPE_INPUT,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_BUFFER_TYPE_OUTPUT,
|
||||
VDEC_BUFFER_TYPE_INTERNAL1,
|
||||
VDEC_BUFFER_TYPE_INTERNAL2,
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum {
|
||||
VDEC_QUEUE_SUCCESS,
|
||||
VDEC_QUEUE_FAILED,
|
||||
VDEC_QUEUE_BADSTATE,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct vdec_input_buf_info {
|
||||
u32 offset;
|
||||
u32 data;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 size;
|
||||
int timestamp_lo;
|
||||
int timestamp_hi;
|
||||
int avsync_state;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 flags;
|
||||
};
|
||||
struct vdec_buf_desc {
|
||||
u32 bufsize;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 num_min_buffers;
|
||||
u32 num_max_buffers;
|
||||
};
|
||||
struct vdec_buf_req {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 max_input_queue_size;
|
||||
struct vdec_buf_desc input;
|
||||
struct vdec_buf_desc output;
|
||||
struct vdec_buf_desc dec_req1;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_buf_desc dec_req2;
|
||||
};
|
||||
struct vdec_region_info {
|
||||
u32 src_id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 offset;
|
||||
u32 size;
|
||||
};
|
||||
struct vdec_config {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 fourcc;
|
||||
u32 width;
|
||||
u32 height;
|
||||
u32 order;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 notify_enable;
|
||||
u32 vc1_rowbase;
|
||||
u32 h264_startcode_detect;
|
||||
u32 h264_nal_len_size;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 postproc_flag;
|
||||
u32 fruc_enable;
|
||||
u32 reserved;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_vc1_panscan_regions {
|
||||
int num;
|
||||
int width[4];
|
||||
int height[4];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int xoffset[4];
|
||||
int yoffset[4];
|
||||
};
|
||||
struct vdec_cropping_window {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 x1;
|
||||
u32 y1;
|
||||
u32 x2;
|
||||
u32 y2;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct vdec_frame_info {
|
||||
u32 status;
|
||||
u32 offset;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 data1;
|
||||
u32 data2;
|
||||
int timestamp_lo;
|
||||
int timestamp_hi;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int cal_timestamp_lo;
|
||||
int cal_timestamp_hi;
|
||||
u32 dec_width;
|
||||
u32 dec_height;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_cropping_window cwin;
|
||||
u32 picture_type[2];
|
||||
u32 picture_format;
|
||||
u32 vc1_rangeY;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 vc1_rangeUV;
|
||||
u32 picture_resolution;
|
||||
u32 frame_disp_repeat;
|
||||
u32 repeat_first_field;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 top_field_first;
|
||||
u32 interframe_interp;
|
||||
struct vdec_vc1_panscan_regions panscan;
|
||||
u32 concealed_macblk_num;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 flags;
|
||||
u32 performance_stats;
|
||||
u32 data3;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_buf_info {
|
||||
u32 buf_type;
|
||||
struct vdec_region_info region;
|
||||
u32 num_buf;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 islast;
|
||||
};
|
||||
struct vdec_buffer {
|
||||
u32 pmem_id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_buf_info buf;
|
||||
};
|
||||
struct vdec_sequence {
|
||||
u8 *header;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 len;
|
||||
};
|
||||
struct vdec_config_sps {
|
||||
struct vdec_config cfg;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_sequence seq;
|
||||
};
|
||||
#define VDEC_MSG_REUSEINPUTBUFFER 1
|
||||
#define VDEC_MSG_FRAMEDONE 2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_msg {
|
||||
u32 id;
|
||||
union {
|
||||
u32 buf_id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_frame_info vfr_info;
|
||||
};
|
||||
};
|
||||
struct vdec_init {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_config_sps sps_cfg;
|
||||
struct vdec_buf_req *buf_req;
|
||||
};
|
||||
struct vdec_input_buf {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 pmem_id;
|
||||
struct vdec_input_buf_info buffer;
|
||||
struct vdec_queue_status *queue_status;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_queue_status {
|
||||
u32 status;
|
||||
};
|
||||
struct vdec_dec_attributes {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 fourcc;
|
||||
u32 profile;
|
||||
u32 level;
|
||||
u32 dec_pic_width;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
u32 dec_pic_height;
|
||||
struct vdec_buf_desc input;
|
||||
struct vdec_buf_desc output;
|
||||
struct vdec_buf_desc dec_req1;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_buf_desc dec_req2;
|
||||
};
|
||||
#endif
|
@@ -1,305 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _MSM_VENC_H_
|
||||
#define _MSM_VENC_H_
|
||||
#include <linux/types.h>
|
||||
#define VENC_MAX_RECON_BUFFERS 2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VENC_FLAG_EOS 0x00000001
|
||||
#define VENC_FLAG_END_OF_FRAME 0x00000010
|
||||
#define VENC_FLAG_SYNC_FRAME 0x00000020
|
||||
#define VENC_FLAG_EXTRA_DATA 0x00000040
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VENC_FLAG_CODEC_CONFIG 0x00000080
|
||||
enum venc_flush_type {
|
||||
VENC_FLUSH_INPUT,
|
||||
VENC_FLUSH_OUTPUT,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_FLUSH_ALL
|
||||
};
|
||||
enum venc_state_type {
|
||||
VENC_STATE_PAUSE = 0x1,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_STATE_START = 0x2,
|
||||
VENC_STATE_STOP = 0x4
|
||||
};
|
||||
enum venc_event_type_enum {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_EVENT_START_STATUS,
|
||||
VENC_EVENT_STOP_STATUS,
|
||||
VENC_EVENT_SUSPEND_STATUS,
|
||||
VENC_EVENT_RESUME_STATUS,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_EVENT_FLUSH_STATUS,
|
||||
VENC_EVENT_RELEASE_INPUT,
|
||||
VENC_EVENT_DELIVER_OUTPUT,
|
||||
VENC_EVENT_UNKNOWN_STATUS
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum venc_status_code {
|
||||
VENC_STATUS_SUCCESS,
|
||||
VENC_STATUS_ERROR,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_STATUS_INVALID_STATE,
|
||||
VENC_STATUS_FLUSHING,
|
||||
VENC_STATUS_INVALID_PARAM,
|
||||
VENC_STATUS_CMD_QUEUE_FULL,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_STATUS_CRITICAL,
|
||||
VENC_STATUS_INSUFFICIENT_RESOURCES,
|
||||
VENC_STATUS_TIMEOUT
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum venc_msg_code {
|
||||
VENC_MSG_INDICATION,
|
||||
VENC_MSG_INPUT_BUFFER_DONE,
|
||||
VENC_MSG_OUTPUT_BUFFER_DONE,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_MSG_NEED_OUTPUT_BUFFER,
|
||||
VENC_MSG_FLUSH,
|
||||
VENC_MSG_START,
|
||||
VENC_MSG_STOP,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_MSG_PAUSE,
|
||||
VENC_MSG_RESUME,
|
||||
VENC_MSG_STOP_READING_MSG
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum venc_error_code {
|
||||
VENC_S_SUCCESS,
|
||||
VENC_S_EFAIL,
|
||||
VENC_S_EFATAL,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_S_EBADPARAM,
|
||||
VENC_S_EINVALSTATE,
|
||||
VENC_S_ENOSWRES,
|
||||
VENC_S_ENOHWRES,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_S_EBUFFREQ,
|
||||
VENC_S_EINVALCMD,
|
||||
VENC_S_ETIMEOUT,
|
||||
VENC_S_ENOREATMPT,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_S_ENOPREREQ,
|
||||
VENC_S_ECMDQFULL,
|
||||
VENC_S_ENOTSUPP,
|
||||
VENC_S_ENOTIMPL,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_S_ENOTPMEM,
|
||||
VENC_S_EFLUSHED,
|
||||
VENC_S_EINSUFBUF,
|
||||
VENC_S_ESAMESTATE,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_S_EINVALTRANS
|
||||
};
|
||||
enum venc_mem_region_enum {
|
||||
VENC_PMEM_EBI1,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VENC_PMEM_SMI
|
||||
};
|
||||
struct venc_buf_type {
|
||||
unsigned int region;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int phys;
|
||||
unsigned int size;
|
||||
int offset;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_qp_range {
|
||||
unsigned int min_qp;
|
||||
unsigned int max_qp;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_frame_rate {
|
||||
unsigned int frame_rate_num;
|
||||
unsigned int frame_rate_den;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_slice_info {
|
||||
unsigned int slice_mode;
|
||||
unsigned int units_per_slice;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_extra_data {
|
||||
unsigned int slice_extra_data_flag;
|
||||
unsigned int slice_client_data1;
|
||||
unsigned int slice_client_data2;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int slice_client_data3;
|
||||
unsigned int none_extra_data_flag;
|
||||
unsigned int none_client_data1;
|
||||
unsigned int none_client_data2;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int none_client_data3;
|
||||
};
|
||||
struct venc_common_config {
|
||||
unsigned int standard;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int input_frame_height;
|
||||
unsigned int input_frame_width;
|
||||
unsigned int output_frame_height;
|
||||
unsigned int output_frame_width;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int rotation_angle;
|
||||
unsigned int intra_period;
|
||||
unsigned int rate_control;
|
||||
struct venc_frame_rate frame_rate;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int bitrate;
|
||||
struct venc_qp_range qp_range;
|
||||
unsigned int iframe_qp;
|
||||
unsigned int pframe_qp;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_slice_info slice_config;
|
||||
struct venc_extra_data extra_data;
|
||||
};
|
||||
struct venc_nonio_buf_config {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_buf_type recon_buf1;
|
||||
struct venc_buf_type recon_buf2;
|
||||
struct venc_buf_type wb_buf;
|
||||
struct venc_buf_type cmd_buf;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_buf_type vlc_buf;
|
||||
};
|
||||
struct venc_mpeg4_config {
|
||||
unsigned int profile;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int level;
|
||||
unsigned int time_resolution;
|
||||
unsigned int ac_prediction;
|
||||
unsigned int hec_interval;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int data_partition;
|
||||
unsigned int short_header;
|
||||
unsigned int rvlc_enable;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_h263_config {
|
||||
unsigned int profile;
|
||||
unsigned int level;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_h264_config {
|
||||
unsigned int profile;
|
||||
unsigned int level;
|
||||
unsigned int max_nal;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int idr_period;
|
||||
};
|
||||
struct venc_pmem {
|
||||
int src;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int fd;
|
||||
unsigned int offset;
|
||||
void *virt;
|
||||
void *phys;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int size;
|
||||
};
|
||||
struct venc_buffer {
|
||||
unsigned char *ptr_buffer;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int size;
|
||||
unsigned int len;
|
||||
unsigned int offset;
|
||||
long long time_stamp;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int flags;
|
||||
unsigned int client_data;
|
||||
};
|
||||
struct venc_buffers {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_pmem recon_buf[VENC_MAX_RECON_BUFFERS];
|
||||
struct venc_pmem wb_buf;
|
||||
struct venc_pmem cmd_buf;
|
||||
struct venc_pmem vlc_buf;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct venc_buffer_flush {
|
||||
unsigned int flush_mode;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
union venc_msg_data {
|
||||
struct venc_buffer buf;
|
||||
struct venc_buffer_flush flush_ret;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_msg {
|
||||
unsigned int status_code;
|
||||
unsigned int msg_code;
|
||||
union venc_msg_data msg_data;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int msg_data_size;
|
||||
};
|
||||
union venc_codec_config {
|
||||
struct venc_mpeg4_config mpeg4_params;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_h263_config h263_params;
|
||||
struct venc_h264_config h264_params;
|
||||
};
|
||||
struct venc_q6_config {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_common_config config_params;
|
||||
union venc_codec_config codec_params;
|
||||
struct venc_nonio_buf_config buf_params;
|
||||
void *callback_event;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct venc_hdr_config {
|
||||
struct venc_common_config config_params;
|
||||
union venc_codec_config codec_params;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct venc_init_config {
|
||||
struct venc_q6_config q6_config;
|
||||
struct venc_buffers q6_bufs;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct venc_seq_config {
|
||||
int size;
|
||||
struct venc_pmem buf;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_q6_config q6_config;
|
||||
};
|
||||
#define VENC_IOCTL_MAGIC 'V'
|
||||
#define VENC_IOCTL_CMD_READ_NEXT_MSG _IOWR(VENC_IOCTL_MAGIC, 1, struct venc_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VENC_IOCTL_CMD_STOP_READ_MSG _IO(VENC_IOCTL_MAGIC, 2)
|
||||
#define VENC_IOCTL_SET_INPUT_BUFFER _IOW(VENC_IOCTL_MAGIC, 3, struct venc_pmem)
|
||||
#define VENC_IOCTL_SET_OUTPUT_BUFFER _IOW(VENC_IOCTL_MAGIC, 4, struct venc_pmem)
|
||||
#define VENC_IOCTL_CMD_START _IOW(VENC_IOCTL_MAGIC, 5, struct venc_init_config)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VENC_IOCTL_CMD_ENCODE_FRAME _IOW(VENC_IOCTL_MAGIC, 6, struct venc_buffer)
|
||||
#define VENC_IOCTL_CMD_FILL_OUTPUT_BUFFER _IOW(VENC_IOCTL_MAGIC, 7, struct venc_buffer)
|
||||
#define VENC_IOCTL_CMD_FLUSH _IOW(VENC_IOCTL_MAGIC, 8, struct venc_buffer_flush)
|
||||
#define VENC_IOCTL_CMD_PAUSE _IO(VENC_IOCTL_MAGIC, 9)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VENC_IOCTL_CMD_RESUME _IO(VENC_IOCTL_MAGIC, 10)
|
||||
#define VENC_IOCTL_CMD_STOP _IO(VENC_IOCTL_MAGIC, 11)
|
||||
#define VENC_IOCTL_SET_INTRA_PERIOD _IOW(VENC_IOCTL_MAGIC, 12, int)
|
||||
#define VENC_IOCTL_CMD_REQUEST_IFRAME _IO(VENC_IOCTL_MAGIC, 13)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VENC_IOCTL_GET_SEQUENCE_HDR _IOWR(VENC_IOCTL_MAGIC, 14, struct venc_seq_config)
|
||||
#define VENC_IOCTL_SET_INTRA_REFRESH _IOW(VENC_IOCTL_MAGIC, 15, int)
|
||||
#define VENC_IOCTL_SET_FRAME_RATE _IOW(VENC_IOCTL_MAGIC, 16, struct venc_frame_rate)
|
||||
#define VENC_IOCTL_SET_TARGET_BITRATE _IOW(VENC_IOCTL_MAGIC, 17, int)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VENC_IOCTL_SET_QP_RANGE _IOW(VENC_IOCTL_MAGIC, 18, struct venc_qp_range)
|
||||
#endif
|
@@ -1,53 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _MSM_RMNET_H_
|
||||
#define _MSM_RMNET_H_
|
||||
#define RMNET_MODE_NONE (0x00)
|
||||
#define RMNET_MODE_LLP_ETH (0x01)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define RMNET_MODE_LLP_IP (0x02)
|
||||
#define RMNET_MODE_QOS (0x04)
|
||||
#define RMNET_MODE_MASK (RMNET_MODE_LLP_ETH | RMNET_MODE_LLP_IP | RMNET_MODE_QOS)
|
||||
#define RMNET_IS_MODE_QOS(mode) ((mode & RMNET_MODE_QOS) == RMNET_MODE_QOS)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define RMNET_IS_MODE_IP(mode) ((mode & RMNET_MODE_LLP_IP) == RMNET_MODE_LLP_IP)
|
||||
enum rmnet_ioctl_cmds_e {
|
||||
RMNET_IOCTL_SET_LLP_ETHERNET = 0x000089F1,
|
||||
RMNET_IOCTL_SET_LLP_IP = 0x000089F2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
RMNET_IOCTL_GET_LLP = 0x000089F3,
|
||||
RMNET_IOCTL_SET_QOS_ENABLE = 0x000089F4,
|
||||
RMNET_IOCTL_SET_QOS_DISABLE = 0x000089F5,
|
||||
RMNET_IOCTL_GET_QOS = 0x000089F6,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
RMNET_IOCTL_GET_OPMODE = 0x000089F7,
|
||||
RMNET_IOCTL_OPEN = 0x000089F8,
|
||||
RMNET_IOCTL_CLOSE = 0x000089F9,
|
||||
RMNET_IOCTL_MAX
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#define QMI_QOS_HDR_S __attribute((__packed__)) qmi_qos_hdr_s
|
||||
struct QMI_QOS_HDR_S {
|
||||
unsigned char version;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned char flags;
|
||||
unsigned long flow_id;
|
||||
};
|
||||
#endif
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
@@ -1,75 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __MSM_ROTATOR_H__
|
||||
#define __MSM_ROTATOR_H__
|
||||
#include <linux/types.h>
|
||||
#include <linux/msm_mdp.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_ROTATOR_IOCTL_MAGIC 'R'
|
||||
#define MSM_ROTATOR_IOCTL_START _IOWR(MSM_ROTATOR_IOCTL_MAGIC, 1, struct msm_rotator_img_info)
|
||||
#define MSM_ROTATOR_IOCTL_ROTATE _IOW(MSM_ROTATOR_IOCTL_MAGIC, 2, struct msm_rotator_data_info)
|
||||
#define MSM_ROTATOR_IOCTL_FINISH _IOW(MSM_ROTATOR_IOCTL_MAGIC, 3, int)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define ROTATOR_VERSION_01 0xA5B4C301
|
||||
enum rotator_clk_type {
|
||||
ROTATOR_CORE_CLK,
|
||||
ROTATOR_PCLK,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
ROTATOR_IMEM_CLK
|
||||
};
|
||||
struct msm_rotator_img_info {
|
||||
unsigned int session_id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msmfb_img src;
|
||||
struct msmfb_img dst;
|
||||
struct mdp_rect src_rect;
|
||||
unsigned int dst_x;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int dst_y;
|
||||
unsigned char rotations;
|
||||
int enable;
|
||||
unsigned int downscale_ratio;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int secure;
|
||||
};
|
||||
struct msm_rotator_data_info {
|
||||
int session_id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msmfb_data src;
|
||||
struct msmfb_data dst;
|
||||
unsigned int version_key;
|
||||
struct msmfb_data src_chroma;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msmfb_data dst_chroma;
|
||||
};
|
||||
struct msm_rot_clocks {
|
||||
const char *clk_name;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum rotator_clk_type clk_type;
|
||||
unsigned int clk_rate;
|
||||
};
|
||||
struct msm_rotator_platform_data {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int number_of_clocks;
|
||||
unsigned int hardware_version_number;
|
||||
struct msm_rot_clocks *rotator_clks;
|
||||
char rot_iommu_split_domain;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#endif
|
@@ -1,539 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _MSM_VIDC_DEC_H_
|
||||
#define _MSM_VIDC_DEC_H_
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_S_BASE 0x40000000
|
||||
#define VDEC_S_SUCCESS (VDEC_S_BASE)
|
||||
#define VDEC_S_EFAIL (VDEC_S_BASE + 1)
|
||||
#define VDEC_S_EFATAL (VDEC_S_BASE + 2)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_S_EBADPARAM (VDEC_S_BASE + 3)
|
||||
#define VDEC_S_EINVALSTATE (VDEC_S_BASE + 4)
|
||||
#define VDEC_S_ENOSWRES (VDEC_S_BASE + 5)
|
||||
#define VDEC_S_ENOHWRES (VDEC_S_BASE + 6)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_S_EINVALCMD (VDEC_S_BASE + 7)
|
||||
#define VDEC_S_ETIMEOUT (VDEC_S_BASE + 8)
|
||||
#define VDEC_S_ENOPREREQ (VDEC_S_BASE + 9)
|
||||
#define VDEC_S_ECMDQFULL (VDEC_S_BASE + 10)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_S_ENOTSUPP (VDEC_S_BASE + 11)
|
||||
#define VDEC_S_ENOTIMPL (VDEC_S_BASE + 12)
|
||||
#define VDEC_S_BUSY (VDEC_S_BASE + 13)
|
||||
#define VDEC_S_INPUT_BITSTREAM_ERR (VDEC_S_BASE + 14)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_INTF_VER 1
|
||||
#define VDEC_MSG_BASE 0x0000000
|
||||
#define VDEC_MSG_INVALID (VDEC_MSG_BASE + 0)
|
||||
#define VDEC_MSG_RESP_INPUT_BUFFER_DONE (VDEC_MSG_BASE + 1)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_MSG_RESP_OUTPUT_BUFFER_DONE (VDEC_MSG_BASE + 2)
|
||||
#define VDEC_MSG_RESP_INPUT_FLUSHED (VDEC_MSG_BASE + 3)
|
||||
#define VDEC_MSG_RESP_OUTPUT_FLUSHED (VDEC_MSG_BASE + 4)
|
||||
#define VDEC_MSG_RESP_FLUSH_INPUT_DONE (VDEC_MSG_BASE + 5)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_MSG_RESP_FLUSH_OUTPUT_DONE (VDEC_MSG_BASE + 6)
|
||||
#define VDEC_MSG_RESP_START_DONE (VDEC_MSG_BASE + 7)
|
||||
#define VDEC_MSG_RESP_STOP_DONE (VDEC_MSG_BASE + 8)
|
||||
#define VDEC_MSG_RESP_PAUSE_DONE (VDEC_MSG_BASE + 9)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_MSG_RESP_RESUME_DONE (VDEC_MSG_BASE + 10)
|
||||
#define VDEC_MSG_RESP_RESOURCE_LOADED (VDEC_MSG_BASE + 11)
|
||||
#define VDEC_EVT_RESOURCES_LOST (VDEC_MSG_BASE + 12)
|
||||
#define VDEC_MSG_EVT_CONFIG_CHANGED (VDEC_MSG_BASE + 13)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_MSG_EVT_HW_ERROR (VDEC_MSG_BASE + 14)
|
||||
#define VDEC_MSG_EVT_INFO_CONFIG_CHANGED (VDEC_MSG_BASE + 15)
|
||||
#define VDEC_MSG_EVT_INFO_FIELD_DROPPED (VDEC_MSG_BASE + 16)
|
||||
#define VDEC_BUFFERFLAG_EOS 0x00000001
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_BUFFERFLAG_DECODEONLY 0x00000004
|
||||
#define VDEC_BUFFERFLAG_DATACORRUPT 0x00000008
|
||||
#define VDEC_BUFFERFLAG_ENDOFFRAME 0x00000010
|
||||
#define VDEC_BUFFERFLAG_SYNCFRAME 0x00000020
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_BUFFERFLAG_EXTRADATA 0x00000040
|
||||
#define VDEC_BUFFERFLAG_CODECCONFIG 0x00000080
|
||||
#define VDEC_EXTRADATA_NONE 0x001
|
||||
#define VDEC_EXTRADATA_QP 0x004
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_EXTRADATA_MB_ERROR_MAP 0x008
|
||||
#define VDEC_EXTRADATA_SEI 0x010
|
||||
#define VDEC_EXTRADATA_VUI 0x020
|
||||
#define VDEC_EXTRADATA_VC1 0x040
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_CMDBASE 0x800
|
||||
#define VDEC_CMD_SET_INTF_VERSION (VDEC_CMDBASE)
|
||||
#define VDEC_IOCTL_MAGIC 'v'
|
||||
struct vdec_ioctl_msg {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
void __user *in;
|
||||
void __user *out;
|
||||
};
|
||||
#define VDEC_IOCTL_GET_PROFILE_LEVEL_SUPPORTED _IOWR(VDEC_IOCTL_MAGIC, 0, struct vdec_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_GET_INTERLACE_FORMAT _IOR(VDEC_IOCTL_MAGIC, 1, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_GET_CURRENT_PROFILE_LEVEL _IOWR(VDEC_IOCTL_MAGIC, 2, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_SET_OUTPUT_FORMAT _IOWR(VDEC_IOCTL_MAGIC, 3, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_GET_OUTPUT_FORMAT _IOWR(VDEC_IOCTL_MAGIC, 4, struct vdec_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_SET_CODEC _IOW(VDEC_IOCTL_MAGIC, 5, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_GET_CODEC _IOR(VDEC_IOCTL_MAGIC, 6, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_SET_PICRES _IOW(VDEC_IOCTL_MAGIC, 7, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_GET_PICRES _IOR(VDEC_IOCTL_MAGIC, 8, struct vdec_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_SET_EXTRADATA _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_GET_EXTRADATA _IOR(VDEC_IOCTL_MAGIC, 10, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_SET_SEQUENCE_HEADER _IOW(VDEC_IOCTL_MAGIC, 11, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_SET_BUFFER_REQ _IOW(VDEC_IOCTL_MAGIC, 12, struct vdec_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_GET_BUFFER_REQ _IOR(VDEC_IOCTL_MAGIC, 13, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_ALLOCATE_BUFFER _IOWR(VDEC_IOCTL_MAGIC, 14, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_FREE_BUFFER _IOW(VDEC_IOCTL_MAGIC, 15, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_SET_BUFFER _IOW(VDEC_IOCTL_MAGIC, 16, struct vdec_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_FILL_OUTPUT_BUFFER _IOW(VDEC_IOCTL_MAGIC, 17, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_DECODE_FRAME _IOW(VDEC_IOCTL_MAGIC, 18, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_LOAD_RESOURCES _IO(VDEC_IOCTL_MAGIC, 19)
|
||||
#define VDEC_IOCTL_CMD_START _IO(VDEC_IOCTL_MAGIC, 20)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_CMD_STOP _IO(VDEC_IOCTL_MAGIC, 21)
|
||||
#define VDEC_IOCTL_CMD_PAUSE _IO(VDEC_IOCTL_MAGIC, 22)
|
||||
#define VDEC_IOCTL_CMD_RESUME _IO(VDEC_IOCTL_MAGIC, 23)
|
||||
#define VDEC_IOCTL_CMD_FLUSH _IOW(VDEC_IOCTL_MAGIC, 24, struct vdec_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_GET_NEXT_MSG _IOR(VDEC_IOCTL_MAGIC, 25, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_STOP_NEXT_MSG _IO(VDEC_IOCTL_MAGIC, 26)
|
||||
#define VDEC_IOCTL_GET_NUMBER_INSTANCES _IOR(VDEC_IOCTL_MAGIC, 27, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_SET_PICTURE_ORDER _IOW(VDEC_IOCTL_MAGIC, 28, struct vdec_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_SET_FRAME_RATE _IOW(VDEC_IOCTL_MAGIC, 29, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_SET_H264_MV_BUFFER _IOW(VDEC_IOCTL_MAGIC, 30, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_FREE_H264_MV_BUFFER _IOW(VDEC_IOCTL_MAGIC, 31, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_GET_MV_BUFFER_SIZE _IOR(VDEC_IOCTL_MAGIC, 32, struct vdec_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_SET_IDR_ONLY_DECODING _IO(VDEC_IOCTL_MAGIC, 33)
|
||||
#define VDEC_IOCTL_SET_CONT_ON_RECONFIG _IO(VDEC_IOCTL_MAGIC, 34)
|
||||
#define VDEC_IOCTL_SET_DISABLE_DMX _IOW(VDEC_IOCTL_MAGIC, 35, struct vdec_ioctl_msg)
|
||||
#define VDEC_IOCTL_GET_DISABLE_DMX _IOR(VDEC_IOCTL_MAGIC, 36, struct vdec_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VDEC_IOCTL_GET_DISABLE_DMX_SUPPORT _IOR(VDEC_IOCTL_MAGIC, 37, struct vdec_ioctl_msg)
|
||||
enum vdec_picture {
|
||||
PICTURE_TYPE_I,
|
||||
PICTURE_TYPE_P,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
PICTURE_TYPE_B,
|
||||
PICTURE_TYPE_BI,
|
||||
PICTURE_TYPE_SKIP,
|
||||
PICTURE_TYPE_IDR,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
PICTURE_TYPE_UNKNOWN
|
||||
};
|
||||
enum vdec_buffer {
|
||||
VDEC_BUFFER_TYPE_INPUT,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_BUFFER_TYPE_OUTPUT
|
||||
};
|
||||
struct vdec_allocatorproperty {
|
||||
enum vdec_buffer buffer_type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t mincount;
|
||||
uint32_t maxcount;
|
||||
uint32_t actualcount;
|
||||
size_t buffer_size;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t alignment;
|
||||
uint32_t buf_poolid;
|
||||
};
|
||||
struct vdec_bufferpayload {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
void __user *bufferaddr;
|
||||
size_t buffer_len;
|
||||
int pmem_fd;
|
||||
size_t offset;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
size_t mmaped_size;
|
||||
};
|
||||
struct vdec_setbuffer_cmd {
|
||||
enum vdec_buffer buffer_type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_bufferpayload buffer;
|
||||
};
|
||||
struct vdec_fillbuffer_cmd {
|
||||
struct vdec_bufferpayload buffer;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
void *client_data;
|
||||
};
|
||||
enum vdec_bufferflush {
|
||||
VDEC_FLUSH_TYPE_INPUT,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_FLUSH_TYPE_OUTPUT,
|
||||
VDEC_FLUSH_TYPE_ALL
|
||||
};
|
||||
enum vdec_codec {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_CODECTYPE_H264 = 0x1,
|
||||
VDEC_CODECTYPE_H263 = 0x2,
|
||||
VDEC_CODECTYPE_MPEG4 = 0x3,
|
||||
VDEC_CODECTYPE_DIVX_3 = 0x4,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_CODECTYPE_DIVX_4 = 0x5,
|
||||
VDEC_CODECTYPE_DIVX_5 = 0x6,
|
||||
VDEC_CODECTYPE_DIVX_6 = 0x7,
|
||||
VDEC_CODECTYPE_XVID = 0x8,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_CODECTYPE_MPEG1 = 0x9,
|
||||
VDEC_CODECTYPE_MPEG2 = 0xa,
|
||||
VDEC_CODECTYPE_VC1 = 0xb,
|
||||
VDEC_CODECTYPE_VC1_RCV = 0xc
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum vdec_mpeg2_profile {
|
||||
VDEC_MPEG2ProfileSimple = 0x1,
|
||||
VDEC_MPEG2ProfileMain = 0x2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG2Profile422 = 0x4,
|
||||
VDEC_MPEG2ProfileSNR = 0x8,
|
||||
VDEC_MPEG2ProfileSpatial = 0x10,
|
||||
VDEC_MPEG2ProfileHigh = 0x20,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG2ProfileKhronosExtensions = 0x6F000000,
|
||||
VDEC_MPEG2ProfileVendorStartUnused = 0x7F000000,
|
||||
VDEC_MPEG2ProfileMax = 0x7FFFFFFF
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum vdec_mpeg2_level {
|
||||
VDEC_MPEG2LevelLL = 0x1,
|
||||
VDEC_MPEG2LevelML = 0x2,
|
||||
VDEC_MPEG2LevelH14 = 0x4,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG2LevelHL = 0x8,
|
||||
VDEC_MPEG2LevelKhronosExtensions = 0x6F000000,
|
||||
VDEC_MPEG2LevelVendorStartUnused = 0x7F000000,
|
||||
VDEC_MPEG2LevelMax = 0x7FFFFFFF
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum vdec_mpeg4_profile {
|
||||
VDEC_MPEG4ProfileSimple = 0x01,
|
||||
VDEC_MPEG4ProfileSimpleScalable = 0x02,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG4ProfileCore = 0x04,
|
||||
VDEC_MPEG4ProfileMain = 0x08,
|
||||
VDEC_MPEG4ProfileNbit = 0x10,
|
||||
VDEC_MPEG4ProfileScalableTexture = 0x20,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG4ProfileSimpleFace = 0x40,
|
||||
VDEC_MPEG4ProfileSimpleFBA = 0x80,
|
||||
VDEC_MPEG4ProfileBasicAnimated = 0x100,
|
||||
VDEC_MPEG4ProfileHybrid = 0x200,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG4ProfileAdvancedRealTime = 0x400,
|
||||
VDEC_MPEG4ProfileCoreScalable = 0x800,
|
||||
VDEC_MPEG4ProfileAdvancedCoding = 0x1000,
|
||||
VDEC_MPEG4ProfileAdvancedCore = 0x2000,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG4ProfileAdvancedScalable = 0x4000,
|
||||
VDEC_MPEG4ProfileAdvancedSimple = 0x8000,
|
||||
VDEC_MPEG4ProfileKhronosExtensions = 0x6F000000,
|
||||
VDEC_MPEG4ProfileVendorStartUnused = 0x7F000000,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG4ProfileMax = 0x7FFFFFFF
|
||||
};
|
||||
enum vdec_mpeg4_level {
|
||||
VDEC_MPEG4Level0 = 0x01,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG4Level0b = 0x02,
|
||||
VDEC_MPEG4Level1 = 0x04,
|
||||
VDEC_MPEG4Level2 = 0x08,
|
||||
VDEC_MPEG4Level3 = 0x10,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG4Level4 = 0x20,
|
||||
VDEC_MPEG4Level4a = 0x40,
|
||||
VDEC_MPEG4Level5 = 0x80,
|
||||
VDEC_MPEG4LevelKhronosExtensions = 0x6F000000,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_MPEG4LevelVendorStartUnused = 0x7F000000,
|
||||
VDEC_MPEG4LevelMax = 0x7FFFFFFF
|
||||
};
|
||||
enum vdec_avc_profile {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_AVCProfileBaseline = 0x01,
|
||||
VDEC_AVCProfileMain = 0x02,
|
||||
VDEC_AVCProfileExtended = 0x04,
|
||||
VDEC_AVCProfileHigh = 0x08,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_AVCProfileHigh10 = 0x10,
|
||||
VDEC_AVCProfileHigh422 = 0x20,
|
||||
VDEC_AVCProfileHigh444 = 0x40,
|
||||
VDEC_AVCProfileKhronosExtensions = 0x6F000000,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_AVCProfileVendorStartUnused = 0x7F000000,
|
||||
VDEC_AVCProfileMax = 0x7FFFFFFF
|
||||
};
|
||||
enum vdec_avc_level {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_AVCLevel1 = 0x01,
|
||||
VDEC_AVCLevel1b = 0x02,
|
||||
VDEC_AVCLevel11 = 0x04,
|
||||
VDEC_AVCLevel12 = 0x08,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_AVCLevel13 = 0x10,
|
||||
VDEC_AVCLevel2 = 0x20,
|
||||
VDEC_AVCLevel21 = 0x40,
|
||||
VDEC_AVCLevel22 = 0x80,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_AVCLevel3 = 0x100,
|
||||
VDEC_AVCLevel31 = 0x200,
|
||||
VDEC_AVCLevel32 = 0x400,
|
||||
VDEC_AVCLevel4 = 0x800,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_AVCLevel41 = 0x1000,
|
||||
VDEC_AVCLevel42 = 0x2000,
|
||||
VDEC_AVCLevel5 = 0x4000,
|
||||
VDEC_AVCLevel51 = 0x8000,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_AVCLevelKhronosExtensions = 0x6F000000,
|
||||
VDEC_AVCLevelVendorStartUnused = 0x7F000000,
|
||||
VDEC_AVCLevelMax = 0x7FFFFFFF
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum vdec_divx_profile {
|
||||
VDEC_DIVXProfile_qMobile = 0x01,
|
||||
VDEC_DIVXProfile_Mobile = 0x02,
|
||||
VDEC_DIVXProfile_HD = 0x04,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_DIVXProfile_Handheld = 0x08,
|
||||
VDEC_DIVXProfile_Portable = 0x10,
|
||||
VDEC_DIVXProfile_HomeTheater = 0x20
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum vdec_xvid_profile {
|
||||
VDEC_XVIDProfile_Simple = 0x1,
|
||||
VDEC_XVIDProfile_Advanced_Realtime_Simple = 0x2,
|
||||
VDEC_XVIDProfile_Advanced_Simple = 0x4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum vdec_xvid_level {
|
||||
VDEC_XVID_LEVEL_S_L0 = 0x1,
|
||||
VDEC_XVID_LEVEL_S_L1 = 0x2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_XVID_LEVEL_S_L2 = 0x4,
|
||||
VDEC_XVID_LEVEL_S_L3 = 0x8,
|
||||
VDEC_XVID_LEVEL_ARTS_L1 = 0x10,
|
||||
VDEC_XVID_LEVEL_ARTS_L2 = 0x20,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_XVID_LEVEL_ARTS_L3 = 0x40,
|
||||
VDEC_XVID_LEVEL_ARTS_L4 = 0x80,
|
||||
VDEC_XVID_LEVEL_AS_L0 = 0x100,
|
||||
VDEC_XVID_LEVEL_AS_L1 = 0x200,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_XVID_LEVEL_AS_L2 = 0x400,
|
||||
VDEC_XVID_LEVEL_AS_L3 = 0x800,
|
||||
VDEC_XVID_LEVEL_AS_L4 = 0x1000
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum vdec_h263profile {
|
||||
VDEC_H263ProfileBaseline = 0x01,
|
||||
VDEC_H263ProfileH320Coding = 0x02,
|
||||
VDEC_H263ProfileBackwardCompatible = 0x04,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_H263ProfileISWV2 = 0x08,
|
||||
VDEC_H263ProfileISWV3 = 0x10,
|
||||
VDEC_H263ProfileHighCompression = 0x20,
|
||||
VDEC_H263ProfileInternet = 0x40,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_H263ProfileInterlace = 0x80,
|
||||
VDEC_H263ProfileHighLatency = 0x100,
|
||||
VDEC_H263ProfileKhronosExtensions = 0x6F000000,
|
||||
VDEC_H263ProfileVendorStartUnused = 0x7F000000,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_H263ProfileMax = 0x7FFFFFFF
|
||||
};
|
||||
enum vdec_h263level {
|
||||
VDEC_H263Level10 = 0x01,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_H263Level20 = 0x02,
|
||||
VDEC_H263Level30 = 0x04,
|
||||
VDEC_H263Level40 = 0x08,
|
||||
VDEC_H263Level45 = 0x10,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_H263Level50 = 0x20,
|
||||
VDEC_H263Level60 = 0x40,
|
||||
VDEC_H263Level70 = 0x80,
|
||||
VDEC_H263LevelKhronosExtensions = 0x6F000000,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_H263LevelVendorStartUnused = 0x7F000000,
|
||||
VDEC_H263LevelMax = 0x7FFFFFFF
|
||||
};
|
||||
enum vdec_wmv_format {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_WMVFormatUnused = 0x01,
|
||||
VDEC_WMVFormat7 = 0x02,
|
||||
VDEC_WMVFormat8 = 0x04,
|
||||
VDEC_WMVFormat9 = 0x08,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_WMFFormatKhronosExtensions = 0x6F000000,
|
||||
VDEC_WMFFormatVendorStartUnused = 0x7F000000,
|
||||
VDEC_WMVFormatMax = 0x7FFFFFFF
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
enum vdec_vc1_profile {
|
||||
VDEC_VC1ProfileSimple = 0x1,
|
||||
VDEC_VC1ProfileMain = 0x2,
|
||||
VDEC_VC1ProfileAdvanced = 0x4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum vdec_vc1_level {
|
||||
VDEC_VC1_LEVEL_S_Low = 0x1,
|
||||
VDEC_VC1_LEVEL_S_Medium = 0x2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_VC1_LEVEL_M_Low = 0x4,
|
||||
VDEC_VC1_LEVEL_M_Medium = 0x8,
|
||||
VDEC_VC1_LEVEL_M_High = 0x10,
|
||||
VDEC_VC1_LEVEL_A_L0 = 0x20,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_VC1_LEVEL_A_L1 = 0x40,
|
||||
VDEC_VC1_LEVEL_A_L2 = 0x80,
|
||||
VDEC_VC1_LEVEL_A_L3 = 0x100,
|
||||
VDEC_VC1_LEVEL_A_L4 = 0x200
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct vdec_profile_level {
|
||||
uint32_t profiles;
|
||||
uint32_t levels;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
enum vdec_interlaced_format {
|
||||
VDEC_InterlaceFrameProgressive = 0x1,
|
||||
VDEC_InterlaceInterleaveFrameTopFieldFirst = 0x2,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_InterlaceInterleaveFrameBottomFieldFirst = 0x4
|
||||
};
|
||||
enum vdec_output_fromat {
|
||||
VDEC_YUV_FORMAT_NV12 = 0x1,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_YUV_FORMAT_TILE_4x2 = 0x2
|
||||
};
|
||||
enum vdec_output_order {
|
||||
VDEC_ORDER_DISPLAY = 0x1,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
VDEC_ORDER_DECODE = 0x2
|
||||
};
|
||||
struct vdec_picsize {
|
||||
uint32_t frame_width;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t frame_height;
|
||||
uint32_t stride;
|
||||
uint32_t scan_lines;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_seqheader {
|
||||
void __user *ptr_seqheader;
|
||||
size_t seq_header_len;
|
||||
int pmem_fd;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
size_t pmem_offset;
|
||||
};
|
||||
struct vdec_mberror {
|
||||
void __user *ptr_errormap;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
size_t err_mapsize;
|
||||
};
|
||||
struct vdec_input_frameinfo {
|
||||
void __user *bufferaddr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
size_t offset;
|
||||
size_t datalen;
|
||||
uint32_t flags;
|
||||
int64_t timestamp;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
void *client_data;
|
||||
int pmem_fd;
|
||||
size_t pmem_offset;
|
||||
void __user *desc_addr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t desc_size;
|
||||
};
|
||||
struct vdec_framesize {
|
||||
uint32_t left;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t top;
|
||||
uint32_t right;
|
||||
uint32_t bottom;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_aspectratioinfo {
|
||||
uint32_t aspect_ratio;
|
||||
uint32_t par_width;
|
||||
uint32_t par_height;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct vdec_output_frameinfo {
|
||||
void __user *bufferaddr;
|
||||
size_t offset;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
size_t len;
|
||||
uint32_t flags;
|
||||
int64_t time_stamp;
|
||||
enum vdec_picture pic_type;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
void *client_data;
|
||||
void *input_frame_clientdata;
|
||||
struct vdec_framesize framesize;
|
||||
enum vdec_interlaced_format interlaced_format;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_aspectratioinfo aspect_ratio_info;
|
||||
};
|
||||
union vdec_msgdata {
|
||||
struct vdec_output_frameinfo output_frame;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
void *input_frame_clientdata;
|
||||
};
|
||||
struct vdec_msginfo {
|
||||
uint32_t status_code;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t msgcode;
|
||||
union vdec_msgdata msgdata;
|
||||
size_t msgdatasize;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_framerate {
|
||||
unsigned long fps_denominator;
|
||||
unsigned long fps_numerator;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct vdec_h264_mv{
|
||||
size_t size;
|
||||
int count;
|
||||
int pmem_fd;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int offset;
|
||||
};
|
||||
struct vdec_mv_buff_size{
|
||||
int width;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int height;
|
||||
int size;
|
||||
int alignment;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#endif
|
@@ -1,429 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef _MSM_VIDC_ENC_H_
|
||||
#define _MSM_VIDC_ENC_H_
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_S_BASE 0x00000000
|
||||
#define VEN_S_SUCCESS (VEN_S_BASE)
|
||||
#define VEN_S_EFAIL (VEN_S_BASE+1)
|
||||
#define VEN_S_EFATAL (VEN_S_BASE+2)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_S_EBADPARAM (VEN_S_BASE+3)
|
||||
#define VEN_S_EINVALSTATE (VEN_S_BASE+4)
|
||||
#define VEN_S_ENOSWRES (VEN_S_BASE+5)
|
||||
#define VEN_S_ENOHWRES (VEN_S_BASE+6)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_S_EBUFFREQ (VEN_S_BASE+7)
|
||||
#define VEN_S_EINVALCMD (VEN_S_BASE+8)
|
||||
#define VEN_S_ETIMEOUT (VEN_S_BASE+9)
|
||||
#define VEN_S_ENOREATMPT (VEN_S_BASE+10)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_S_ENOPREREQ (VEN_S_BASE+11)
|
||||
#define VEN_S_ECMDQFULL (VEN_S_BASE+12)
|
||||
#define VEN_S_ENOTSUPP (VEN_S_BASE+13)
|
||||
#define VEN_S_ENOTIMPL (VEN_S_BASE+14)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_S_ENOTPMEM (VEN_S_BASE+15)
|
||||
#define VEN_S_EFLUSHED (VEN_S_BASE+16)
|
||||
#define VEN_S_EINSUFBUF (VEN_S_BASE+17)
|
||||
#define VEN_S_ESAMESTATE (VEN_S_BASE+18)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_S_EINVALTRANS (VEN_S_BASE+19)
|
||||
#define VEN_INTF_VER 1
|
||||
#define VEN_MSG_INDICATION 0
|
||||
#define VEN_MSG_INPUT_BUFFER_DONE 1
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_MSG_OUTPUT_BUFFER_DONE 2
|
||||
#define VEN_MSG_NEED_OUTPUT_BUFFER 3
|
||||
#define VEN_MSG_FLUSH_INPUT_DONE 4
|
||||
#define VEN_MSG_FLUSH_OUPUT_DONE 5
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_MSG_START 6
|
||||
#define VEN_MSG_STOP 7
|
||||
#define VEN_MSG_PAUSE 8
|
||||
#define VEN_MSG_RESUME 9
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_MSG_STOP_READING_MSG 10
|
||||
#define VEN_BUFFLAG_EOS 0x00000001
|
||||
#define VEN_BUFFLAG_ENDOFFRAME 0x00000010
|
||||
#define VEN_BUFFLAG_SYNCFRAME 0x00000020
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_BUFFLAG_EXTRADATA 0x00000040
|
||||
#define VEN_BUFFLAG_CODECCONFIG 0x00000080
|
||||
#define VEN_EXTRADATA_NONE 0x001
|
||||
#define VEN_EXTRADATA_QCOMFILLER 0x002
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_EXTRADATA_SLICEINFO 0x100
|
||||
#define VEN_FRAME_TYPE_I 1
|
||||
#define VEN_FRAME_TYPE_P 2
|
||||
#define VEN_FRAME_TYPE_B 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_CODEC_MPEG4 1
|
||||
#define VEN_CODEC_H264 2
|
||||
#define VEN_CODEC_H263 3
|
||||
#define VEN_PROFILE_MPEG4_SP 1
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_PROFILE_MPEG4_ASP 2
|
||||
#define VEN_PROFILE_H264_BASELINE 3
|
||||
#define VEN_PROFILE_H264_MAIN 4
|
||||
#define VEN_PROFILE_H264_HIGH 5
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_PROFILE_H263_BASELINE 6
|
||||
#define VEN_LEVEL_MPEG4_0 0x1
|
||||
#define VEN_LEVEL_MPEG4_1 0x2
|
||||
#define VEN_LEVEL_MPEG4_2 0x3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_LEVEL_MPEG4_3 0x4
|
||||
#define VEN_LEVEL_MPEG4_4 0x5
|
||||
#define VEN_LEVEL_MPEG4_5 0x6
|
||||
#define VEN_LEVEL_MPEG4_3b 0x7
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_LEVEL_MPEG4_6 0x8
|
||||
#define VEN_LEVEL_H264_1 0x9
|
||||
#define VEN_LEVEL_H264_1b 0xA
|
||||
#define VEN_LEVEL_H264_1p1 0xB
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_LEVEL_H264_1p2 0xC
|
||||
#define VEN_LEVEL_H264_1p3 0xD
|
||||
#define VEN_LEVEL_H264_2 0xE
|
||||
#define VEN_LEVEL_H264_2p1 0xF
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_LEVEL_H264_2p2 0x10
|
||||
#define VEN_LEVEL_H264_3 0x11
|
||||
#define VEN_LEVEL_H264_3p1 0x12
|
||||
#define VEN_LEVEL_H264_3p2 0x13
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_LEVEL_H264_4 0x14
|
||||
#define VEN_LEVEL_H263_10 0x15
|
||||
#define VEN_LEVEL_H263_20 0x16
|
||||
#define VEN_LEVEL_H263_30 0x17
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_LEVEL_H263_40 0x18
|
||||
#define VEN_LEVEL_H263_45 0x19
|
||||
#define VEN_LEVEL_H263_50 0x1A
|
||||
#define VEN_LEVEL_H263_60 0x1B
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_LEVEL_H263_70 0x1C
|
||||
#define VEN_ENTROPY_MODEL_CAVLC 1
|
||||
#define VEN_ENTROPY_MODEL_CABAC 2
|
||||
#define VEN_CABAC_MODEL_0 1
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_CABAC_MODEL_1 2
|
||||
#define VEN_CABAC_MODEL_2 3
|
||||
#define VEN_DB_DISABLE 1
|
||||
#define VEN_DB_ALL_BLKG_BNDRY 2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_DB_SKIP_SLICE_BNDRY 3
|
||||
#define VEN_MSLICE_OFF 1
|
||||
#define VEN_MSLICE_CNT_MB 2
|
||||
#define VEN_MSLICE_CNT_BYTE 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_MSLICE_GOB 4
|
||||
#define VEN_RC_OFF 1
|
||||
#define VEN_RC_VBR_VFR 2
|
||||
#define VEN_RC_VBR_CFR 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_RC_CBR_VFR 4
|
||||
#define VEN_RC_CBR_CFR 5
|
||||
#define VEN_FLUSH_INPUT 1
|
||||
#define VEN_FLUSH_OUTPUT 2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_FLUSH_ALL 3
|
||||
#define VEN_INPUTFMT_NV12 1
|
||||
#define VEN_INPUTFMT_NV21 2
|
||||
#define VEN_INPUTFMT_NV12_16M2KA 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_ROTATION_0 1
|
||||
#define VEN_ROTATION_90 2
|
||||
#define VEN_ROTATION_180 3
|
||||
#define VEN_ROTATION_270 4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_TIMEOUT_INFINITE 0xffffffff
|
||||
#define VEN_IR_OFF 1
|
||||
#define VEN_IR_CYCLIC 2
|
||||
#define VEN_IR_RANDOM 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTLBASE_NENC 0x800
|
||||
#define VEN_IOCTLBASE_ENC 0x850
|
||||
struct venc_ioctl_msg{
|
||||
void __user *in;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
void __user *out;
|
||||
};
|
||||
#define VEN_IOCTL_SET_INTF_VERSION _IOW(VEN_IOCTLBASE_NENC, 0, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_CMD_READ_NEXT_MSG _IOWR(VEN_IOCTLBASE_NENC, 1, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_CMD_STOP_READ_MSG _IO(VEN_IOCTLBASE_NENC, 2)
|
||||
#define VEN_IOCTL_SET_INPUT_BUFFER_REQ _IOW(VEN_IOCTLBASE_NENC, 3, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_INPUT_BUFFER_REQ _IOR(VEN_IOCTLBASE_NENC, 4, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_CMD_ALLOC_INPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 5, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_SET_INPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 6, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_CMD_FREE_INPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 7, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_OUTPUT_BUFFER_REQ _IOW(VEN_IOCTLBASE_NENC, 8, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_OUTPUT_BUFFER_REQ _IOR(VEN_IOCTLBASE_NENC, 9, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_CMD_ALLOC_OUTPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 10, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_OUTPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 11, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_CMD_FREE_OUTPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 12, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_CMD_START _IO(VEN_IOCTLBASE_NENC, 13)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_CMD_ENCODE_FRAME _IOW(VEN_IOCTLBASE_NENC, 14, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_CMD_FILL_OUTPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 15, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_CMD_FLUSH _IOW(VEN_IOCTLBASE_NENC, 16, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_CMD_PAUSE _IO(VEN_IOCTLBASE_NENC, 17)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_CMD_RESUME _IO(VEN_IOCTLBASE_NENC, 18)
|
||||
#define VEN_IOCTL_CMD_STOP _IO(VEN_IOCTLBASE_NENC, 19)
|
||||
#define VEN_IOCTL_SET_RECON_BUFFER _IOW(VEN_IOCTLBASE_NENC, 20, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_FREE_RECON_BUFFER _IOW(VEN_IOCTLBASE_NENC, 21, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_GET_RECON_BUFFER_SIZE _IOW(VEN_IOCTLBASE_NENC, 22, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_BASE_CFG _IOW(VEN_IOCTLBASE_ENC, 1, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_BASE_CFG _IOR(VEN_IOCTLBASE_ENC, 2, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_LIVE_MODE _IOW(VEN_IOCTLBASE_ENC, 3, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_GET_LIVE_MODE _IOR(VEN_IOCTLBASE_ENC, 4, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_CODEC_PROFILE _IOW(VEN_IOCTLBASE_ENC, 5, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_CODEC_PROFILE _IOR(VEN_IOCTLBASE_ENC, 6, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_PROFILE_LEVEL _IOW(VEN_IOCTLBASE_ENC, 7, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_GET_PROFILE_LEVEL _IOR(VEN_IOCTLBASE_ENC, 8, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_SHORT_HDR _IOW(VEN_IOCTLBASE_ENC, 9, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_SHORT_HDR _IOR(VEN_IOCTLBASE_ENC, 10, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_SESSION_QP _IOW(VEN_IOCTLBASE_ENC, 11, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_GET_SESSION_QP _IOR(VEN_IOCTLBASE_ENC, 12, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_INTRA_PERIOD _IOW(VEN_IOCTLBASE_ENC, 13, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_INTRA_PERIOD _IOR(VEN_IOCTLBASE_ENC, 14, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_CMD_REQUEST_IFRAME _IO(VEN_IOCTLBASE_ENC, 15)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_GET_CAPABILITY _IOR(VEN_IOCTLBASE_ENC, 16, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_SEQUENCE_HDR _IOR(VEN_IOCTLBASE_ENC, 17, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_ENTROPY_CFG _IOW(VEN_IOCTLBASE_ENC, 18, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_ENTROPY_CFG _IOR(VEN_IOCTLBASE_ENC, 19, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_SET_DEBLOCKING_CFG _IOW(VEN_IOCTLBASE_ENC, 20, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_DEBLOCKING_CFG _IOR(VEN_IOCTLBASE_ENC, 21, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_INTRA_REFRESH _IOW(VEN_IOCTLBASE_ENC, 22, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_INTRA_REFRESH _IOR(VEN_IOCTLBASE_ENC, 23, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_SET_MULTI_SLICE_CFG _IOW(VEN_IOCTLBASE_ENC, 24, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_MULTI_SLICE_CFG _IOR(VEN_IOCTLBASE_ENC, 25, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_RATE_CTRL_CFG _IOW(VEN_IOCTLBASE_ENC, 26, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_RATE_CTRL_CFG _IOR(VEN_IOCTLBASE_ENC, 27, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_SET_VOP_TIMING_CFG _IOW(VEN_IOCTLBASE_ENC, 28, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_VOP_TIMING_CFG _IOR(VEN_IOCTLBASE_ENC, 29, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_FRAME_RATE _IOW(VEN_IOCTLBASE_ENC, 30, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_FRAME_RATE _IOR(VEN_IOCTLBASE_ENC, 31, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_SET_TARGET_BITRATE _IOW(VEN_IOCTLBASE_ENC, 32, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_TARGET_BITRATE _IOR(VEN_IOCTLBASE_ENC, 33, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_ROTATION _IOW(VEN_IOCTLBASE_ENC, 34, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_ROTATION _IOR(VEN_IOCTLBASE_ENC, 35, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_SET_HEC _IOW(VEN_IOCTLBASE_ENC, 36, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_HEC _IOR(VEN_IOCTLBASE_ENC, 37, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_DATA_PARTITION _IOW(VEN_IOCTLBASE_ENC, 38, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_DATA_PARTITION _IOR(VEN_IOCTLBASE_ENC, 39, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_SET_RVLC _IOW(VEN_IOCTLBASE_ENC, 40, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_RVLC _IOR(VEN_IOCTLBASE_ENC, 41, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_AC_PREDICTION _IOW(VEN_IOCTLBASE_ENC, 42, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_AC_PREDICTION _IOR(VEN_IOCTLBASE_ENC, 43, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_SET_QP_RANGE _IOW(VEN_IOCTLBASE_ENC, 44, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_QP_RANGE _IOR(VEN_IOCTLBASE_ENC, 45, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_NUMBER_INSTANCES _IOR(VEN_IOCTLBASE_ENC, 46, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_METABUFFER_MODE _IOW(VEN_IOCTLBASE_ENC, 47, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VEN_IOCTL_SET_EXTRADATA _IOW(VEN_IOCTLBASE_ENC, 48, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_GET_EXTRADATA _IOR(VEN_IOCTLBASE_ENC, 49, struct venc_ioctl_msg)
|
||||
#define VEN_IOCTL_SET_SLICE_DELIVERY_MODE _IO(VEN_IOCTLBASE_ENC, 50)
|
||||
#define VEN_IOCTL_SET_SPS_PPS_FOR_IDR _IOW(VEN_IOCTLBASE_ENC, 51, struct venc_ioctl_msg)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_switch{
|
||||
unsigned char status;
|
||||
};
|
||||
struct venc_allocatorproperty{
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long mincount;
|
||||
unsigned long maxcount;
|
||||
unsigned long actualcount;
|
||||
unsigned long datasize;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long suffixsize;
|
||||
unsigned long alignment;
|
||||
unsigned long bufpoolid;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_bufferpayload{
|
||||
unsigned char *pbuffer;
|
||||
size_t sz;
|
||||
int fd;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned int offset;
|
||||
unsigned int maped_size;
|
||||
unsigned long filled_len;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_buffer{
|
||||
unsigned char *ptrbuffer;
|
||||
unsigned long sz;
|
||||
unsigned long len;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long offset;
|
||||
long long timestamp;
|
||||
unsigned long flags;
|
||||
void *clientdata;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct venc_basecfg{
|
||||
unsigned long input_width;
|
||||
unsigned long input_height;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long dvs_width;
|
||||
unsigned long dvs_height;
|
||||
unsigned long codectype;
|
||||
unsigned long fps_num;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long fps_den;
|
||||
unsigned long targetbitrate;
|
||||
unsigned long inputformat;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_profile{
|
||||
unsigned long profile;
|
||||
};
|
||||
struct ven_profilelevel{
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long level;
|
||||
};
|
||||
struct venc_sessionqp{
|
||||
unsigned long iframeqp;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long pframqp;
|
||||
};
|
||||
struct venc_qprange{
|
||||
unsigned long maxqp;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long minqp;
|
||||
};
|
||||
struct venc_intraperiod{
|
||||
unsigned long num_pframes;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long num_bframes;
|
||||
};
|
||||
struct venc_seqheader{
|
||||
unsigned char *hdrbufptr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long bufsize;
|
||||
unsigned long hdrlen;
|
||||
};
|
||||
struct venc_capability{
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long codec_types;
|
||||
unsigned long maxframe_width;
|
||||
unsigned long maxframe_height;
|
||||
unsigned long maxtarget_bitrate;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long maxframe_rate;
|
||||
unsigned long input_formats;
|
||||
unsigned char dvs;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_entropycfg{
|
||||
unsigned longentropysel;
|
||||
unsigned long cabacmodel;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_dbcfg{
|
||||
unsigned long db_mode;
|
||||
unsigned long slicealpha_offset;
|
||||
unsigned long slicebeta_offset;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct venc_intrarefresh{
|
||||
unsigned long irmode;
|
||||
unsigned long mbcount;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct venc_multiclicecfg{
|
||||
unsigned long mslice_mode;
|
||||
unsigned long mslice_size;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct venc_bufferflush{
|
||||
unsigned long flush_mode;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_ratectrlcfg{
|
||||
unsigned long rcmode;
|
||||
};
|
||||
struct venc_voptimingcfg{
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long voptime_resolution;
|
||||
};
|
||||
struct venc_framerate{
|
||||
unsigned long fps_denominator;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long fps_numerator;
|
||||
};
|
||||
struct venc_targetbitrate{
|
||||
unsigned long target_bitrate;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct venc_rotation{
|
||||
unsigned long rotation;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_timeout{
|
||||
unsigned long millisec;
|
||||
};
|
||||
struct venc_headerextension{
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long header_extension;
|
||||
};
|
||||
struct venc_msg{
|
||||
unsigned long statuscode;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long msgcode;
|
||||
struct venc_buffer buf;
|
||||
unsigned long msgdata_size;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct venc_recon_addr{
|
||||
unsigned char *pbuffer;
|
||||
unsigned long buffer_size;
|
||||
unsigned long pmem_fd;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
unsigned long offset;
|
||||
};
|
||||
struct venc_recon_buff_size{
|
||||
int width;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int height;
|
||||
int size;
|
||||
int alignment;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@@ -1,100 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __LINUX_MSM_GEMINI_H
|
||||
#define __LINUX_MSM_GEMINI_H
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_GMN_IOCTL_MAGIC 'g'
|
||||
#define MSM_GMN_IOCTL_GET_HW_VERSION _IOW(MSM_GMN_IOCTL_MAGIC, 1, struct msm_gemini_hw_cmd *)
|
||||
#define MSM_GMN_IOCTL_RESET _IOW(MSM_GMN_IOCTL_MAGIC, 2, struct msm_gemini_ctrl_cmd *)
|
||||
#define MSM_GMN_IOCTL_STOP _IOW(MSM_GMN_IOCTL_MAGIC, 3, struct msm_gemini_hw_cmds *)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_GMN_IOCTL_START _IOW(MSM_GMN_IOCTL_MAGIC, 4, struct msm_gemini_hw_cmds *)
|
||||
#define MSM_GMN_IOCTL_INPUT_BUF_ENQUEUE _IOW(MSM_GMN_IOCTL_MAGIC, 5, struct msm_gemini_buf *)
|
||||
#define MSM_GMN_IOCTL_INPUT_GET _IOW(MSM_GMN_IOCTL_MAGIC, 6, struct msm_gemini_buf *)
|
||||
#define MSM_GMN_IOCTL_INPUT_GET_UNBLOCK _IOW(MSM_GMN_IOCTL_MAGIC, 7, int)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_GMN_IOCTL_OUTPUT_BUF_ENQUEUE _IOW(MSM_GMN_IOCTL_MAGIC, 8, struct msm_gemini_buf *)
|
||||
#define MSM_GMN_IOCTL_OUTPUT_GET _IOW(MSM_GMN_IOCTL_MAGIC, 9, struct msm_gemini_buf *)
|
||||
#define MSM_GMN_IOCTL_OUTPUT_GET_UNBLOCK _IOW(MSM_GMN_IOCTL_MAGIC, 10, int)
|
||||
#define MSM_GMN_IOCTL_EVT_GET _IOW(MSM_GMN_IOCTL_MAGIC, 11, struct msm_gemini_ctrl_cmd *)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_GMN_IOCTL_EVT_GET_UNBLOCK _IOW(MSM_GMN_IOCTL_MAGIC, 12, int)
|
||||
#define MSM_GMN_IOCTL_HW_CMD _IOW(MSM_GMN_IOCTL_MAGIC, 13, struct msm_gemini_hw_cmd *)
|
||||
#define MSM_GMN_IOCTL_HW_CMDS _IOW(MSM_GMN_IOCTL_MAGIC, 14, struct msm_gemini_hw_cmds *)
|
||||
#define MSM_GMN_IOCTL_TEST_DUMP_REGION _IOW(MSM_GMN_IOCTL_MAGIC, 15, unsigned long)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_GEMINI_MODE_REALTIME_ENCODE 0
|
||||
#define MSM_GEMINI_MODE_OFFLINE_ENCODE 1
|
||||
#define MSM_GEMINI_MODE_REALTIME_ROTATION 2
|
||||
#define MSM_GEMINI_MODE_OFFLINE_ROTATION 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_gemini_ctrl_cmd {
|
||||
uint32_t type;
|
||||
uint32_t len;
|
||||
void *value;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#define MSM_GEMINI_EVT_RESET 0
|
||||
#define MSM_GEMINI_EVT_FRAMEDONE 1
|
||||
#define MSM_GEMINI_EVT_ERR 2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_gemini_buf {
|
||||
uint32_t type;
|
||||
int fd;
|
||||
void *vaddr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t y_off;
|
||||
uint32_t y_len;
|
||||
uint32_t framedone_len;
|
||||
uint32_t cbcr_off;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t cbcr_len;
|
||||
uint32_t num_of_mcu_rows;
|
||||
uint32_t offset;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_GEMINI_HW_CMD_TYPE_READ 0
|
||||
#define MSM_GEMINI_HW_CMD_TYPE_WRITE 1
|
||||
#define MSM_GEMINI_HW_CMD_TYPE_WRITE_OR 2
|
||||
#define MSM_GEMINI_HW_CMD_TYPE_UWAIT 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_GEMINI_HW_CMD_TYPE_MWAIT 4
|
||||
#define MSM_GEMINI_HW_CMD_TYPE_MDELAY 5
|
||||
#define MSM_GEMINI_HW_CMD_TYPE_UDELAY 6
|
||||
struct msm_gemini_hw_cmd {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t type:4;
|
||||
uint32_t n:12;
|
||||
uint32_t offset:16;
|
||||
uint32_t mask;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
union {
|
||||
uint32_t data;
|
||||
uint32_t *pdata;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct msm_gemini_hw_cmds {
|
||||
uint32_t m;
|
||||
struct msm_gemini_hw_cmd hw_cmd[1];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#endif
|
@@ -1,61 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __LINUX_MSM_GESTURES_H
|
||||
#define __LINUX_MSM_GESTURES_H
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#include <media/msm_camera.h>
|
||||
#define MSM_GES_IOCTL_CTRL_COMMAND _IOW('V', BASE_VIDIOC_PRIVATE + 20, struct v4l2_control)
|
||||
#define VIDIOC_MSM_GESTURE_EVT _IOWR('V', BASE_VIDIOC_PRIVATE + 21, struct v4l2_event)
|
||||
#define MSM_GES_GET_EVT_PAYLOAD _IOW('V', BASE_VIDIOC_PRIVATE + 22, struct msm_ges_evt)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VIDIOC_MSM_GESTURE_CAM_EVT _IOWR('V', BASE_VIDIOC_PRIVATE + 23, int)
|
||||
#define MSM_GES_RESP_V4L2 MSM_CAM_RESP_MAX
|
||||
#define MSM_GES_RESP_MAX (MSM_GES_RESP_V4L2 + 1)
|
||||
#define MSM_SVR_RESP_MAX MSM_GES_RESP_MAX
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_V4L2_GES_BASE 100
|
||||
#define MSM_V4L2_GES_OPEN (MSM_V4L2_GES_BASE + 0)
|
||||
#define MSM_V4L2_GES_CLOSE (MSM_V4L2_GES_BASE + 1)
|
||||
#define MSM_V4L2_GES_CAM_OPEN (MSM_V4L2_GES_BASE + 2)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_V4L2_GES_CAM_CLOSE (MSM_V4L2_GES_BASE + 3)
|
||||
#define MSM_GES_APP_EVT_MIN (V4L2_EVENT_PRIVATE_START + 0x14)
|
||||
#define MSM_GES_APP_NOTIFY_EVENT (MSM_GES_APP_EVT_MIN + 0)
|
||||
#define MSM_GES_APP_NOTIFY_ERROR_EVENT (MSM_GES_APP_EVT_MIN + 1)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_GES_APP_EVT_MAX (MSM_GES_APP_EVT_MIN + 2)
|
||||
#define MSM_GESTURE_CID_CTRL_CMD V4L2_CID_BRIGHTNESS
|
||||
#define MAX_GES_EVENTS 25
|
||||
struct msm_ges_ctrl_cmd {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int type;
|
||||
void *value;
|
||||
int len;
|
||||
int fd;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t cookie;
|
||||
};
|
||||
struct msm_ges_evt {
|
||||
void *evt_data;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int evt_len;
|
||||
};
|
||||
#endif
|
@@ -1,429 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __MSM_ISP_H__
|
||||
#define __MSM_ISP_H__
|
||||
#define BIT(nr) (1UL << (nr))
|
||||
#define MSG_ID_RESET_ACK 0
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_START_ACK 1
|
||||
#define MSG_ID_STOP_ACK 2
|
||||
#define MSG_ID_UPDATE_ACK 3
|
||||
#define MSG_ID_OUTPUT_P 4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_OUTPUT_T 5
|
||||
#define MSG_ID_OUTPUT_S 6
|
||||
#define MSG_ID_OUTPUT_V 7
|
||||
#define MSG_ID_SNAPSHOT_DONE 8
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_STATS_AEC 9
|
||||
#define MSG_ID_STATS_AF 10
|
||||
#define MSG_ID_STATS_AWB 11
|
||||
#define MSG_ID_STATS_RS 12
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_STATS_CS 13
|
||||
#define MSG_ID_STATS_IHIST 14
|
||||
#define MSG_ID_STATS_SKIN 15
|
||||
#define MSG_ID_EPOCH1 16
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_EPOCH2 17
|
||||
#define MSG_ID_SYNC_TIMER0_DONE 18
|
||||
#define MSG_ID_SYNC_TIMER1_DONE 19
|
||||
#define MSG_ID_SYNC_TIMER2_DONE 20
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_ASYNC_TIMER0_DONE 21
|
||||
#define MSG_ID_ASYNC_TIMER1_DONE 22
|
||||
#define MSG_ID_ASYNC_TIMER2_DONE 23
|
||||
#define MSG_ID_ASYNC_TIMER3_DONE 24
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_AE_OVERFLOW 25
|
||||
#define MSG_ID_AF_OVERFLOW 26
|
||||
#define MSG_ID_AWB_OVERFLOW 27
|
||||
#define MSG_ID_RS_OVERFLOW 28
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_CS_OVERFLOW 29
|
||||
#define MSG_ID_IHIST_OVERFLOW 30
|
||||
#define MSG_ID_SKIN_OVERFLOW 31
|
||||
#define MSG_ID_AXI_ERROR 32
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_CAMIF_OVERFLOW 33
|
||||
#define MSG_ID_VIOLATION 34
|
||||
#define MSG_ID_CAMIF_ERROR 35
|
||||
#define MSG_ID_BUS_OVERFLOW 36
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_SOF_ACK 37
|
||||
#define MSG_ID_STOP_REC_ACK 38
|
||||
#define MSG_ID_STATS_AWB_AEC 39
|
||||
#define MSG_ID_OUTPUT_PRIMARY 40
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_OUTPUT_SECONDARY 41
|
||||
#define MSG_ID_STATS_COMPOSITE 42
|
||||
#define MSG_ID_OUTPUT_TERTIARY1 43
|
||||
#define MSG_ID_STOP_LS_ACK 44
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_OUTPUT_TERTIARY2 45
|
||||
#define MSG_ID_STATS_BG 46
|
||||
#define MSG_ID_STATS_BF 47
|
||||
#define MSG_ID_STATS_BHIST 48
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSG_ID_RDI0_UPDATE_ACK 49
|
||||
#define MSG_ID_RDI1_UPDATE_ACK 50
|
||||
#define MSG_ID_RDI2_UPDATE_ACK 51
|
||||
#define VFE_CMD_DUMMY_0 0
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_SET_CLK 1
|
||||
#define VFE_CMD_RESET 2
|
||||
#define VFE_CMD_START 3
|
||||
#define VFE_CMD_TEST_GEN_START 4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_OPERATION_CFG 5
|
||||
#define VFE_CMD_AXI_OUT_CFG 6
|
||||
#define VFE_CMD_CAMIF_CFG 7
|
||||
#define VFE_CMD_AXI_INPUT_CFG 8
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_BLACK_LEVEL_CFG 9
|
||||
#define VFE_CMD_MESH_ROLL_OFF_CFG 10
|
||||
#define VFE_CMD_DEMUX_CFG 11
|
||||
#define VFE_CMD_FOV_CFG 12
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_MAIN_SCALER_CFG 13
|
||||
#define VFE_CMD_WB_CFG 14
|
||||
#define VFE_CMD_COLOR_COR_CFG 15
|
||||
#define VFE_CMD_RGB_G_CFG 16
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_LA_CFG 17
|
||||
#define VFE_CMD_CHROMA_EN_CFG 18
|
||||
#define VFE_CMD_CHROMA_SUP_CFG 19
|
||||
#define VFE_CMD_MCE_CFG 20
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_SK_ENHAN_CFG 21
|
||||
#define VFE_CMD_ASF_CFG 22
|
||||
#define VFE_CMD_S2Y_CFG 23
|
||||
#define VFE_CMD_S2CbCr_CFG 24
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_CHROMA_SUBS_CFG 25
|
||||
#define VFE_CMD_OUT_CLAMP_CFG 26
|
||||
#define VFE_CMD_FRAME_SKIP_CFG 27
|
||||
#define VFE_CMD_DUMMY_1 28
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_DUMMY_2 29
|
||||
#define VFE_CMD_DUMMY_3 30
|
||||
#define VFE_CMD_UPDATE 31
|
||||
#define VFE_CMD_BL_LVL_UPDATE 32
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_DEMUX_UPDATE 33
|
||||
#define VFE_CMD_FOV_UPDATE 34
|
||||
#define VFE_CMD_MAIN_SCALER_UPDATE 35
|
||||
#define VFE_CMD_WB_UPDATE 36
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_COLOR_COR_UPDATE 37
|
||||
#define VFE_CMD_RGB_G_UPDATE 38
|
||||
#define VFE_CMD_LA_UPDATE 39
|
||||
#define VFE_CMD_CHROMA_EN_UPDATE 40
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_CHROMA_SUP_UPDATE 41
|
||||
#define VFE_CMD_MCE_UPDATE 42
|
||||
#define VFE_CMD_SK_ENHAN_UPDATE 43
|
||||
#define VFE_CMD_S2CbCr_UPDATE 44
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_S2Y_UPDATE 45
|
||||
#define VFE_CMD_ASF_UPDATE 46
|
||||
#define VFE_CMD_FRAME_SKIP_UPDATE 47
|
||||
#define VFE_CMD_CAMIF_FRAME_UPDATE 48
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STATS_AF_UPDATE 49
|
||||
#define VFE_CMD_STATS_AE_UPDATE 50
|
||||
#define VFE_CMD_STATS_AWB_UPDATE 51
|
||||
#define VFE_CMD_STATS_RS_UPDATE 52
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STATS_CS_UPDATE 53
|
||||
#define VFE_CMD_STATS_SKIN_UPDATE 54
|
||||
#define VFE_CMD_STATS_IHIST_UPDATE 55
|
||||
#define VFE_CMD_DUMMY_4 56
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_EPOCH1_ACK 57
|
||||
#define VFE_CMD_EPOCH2_ACK 58
|
||||
#define VFE_CMD_START_RECORDING 59
|
||||
#define VFE_CMD_STOP_RECORDING 60
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_DUMMY_5 61
|
||||
#define VFE_CMD_DUMMY_6 62
|
||||
#define VFE_CMD_CAPTURE 63
|
||||
#define VFE_CMD_DUMMY_7 64
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STOP 65
|
||||
#define VFE_CMD_GET_HW_VERSION 66
|
||||
#define VFE_CMD_GET_FRAME_SKIP_COUNTS 67
|
||||
#define VFE_CMD_OUTPUT1_BUFFER_ENQ 68
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_OUTPUT2_BUFFER_ENQ 69
|
||||
#define VFE_CMD_OUTPUT3_BUFFER_ENQ 70
|
||||
#define VFE_CMD_JPEG_OUT_BUF_ENQ 71
|
||||
#define VFE_CMD_RAW_OUT_BUF_ENQ 72
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_RAW_IN_BUF_ENQ 73
|
||||
#define VFE_CMD_STATS_AF_ENQ 74
|
||||
#define VFE_CMD_STATS_AE_ENQ 75
|
||||
#define VFE_CMD_STATS_AWB_ENQ 76
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STATS_RS_ENQ 77
|
||||
#define VFE_CMD_STATS_CS_ENQ 78
|
||||
#define VFE_CMD_STATS_SKIN_ENQ 79
|
||||
#define VFE_CMD_STATS_IHIST_ENQ 80
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_DUMMY_8 81
|
||||
#define VFE_CMD_JPEG_ENC_CFG 82
|
||||
#define VFE_CMD_DUMMY_9 83
|
||||
#define VFE_CMD_STATS_AF_START 84
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STATS_AF_STOP 85
|
||||
#define VFE_CMD_STATS_AE_START 86
|
||||
#define VFE_CMD_STATS_AE_STOP 87
|
||||
#define VFE_CMD_STATS_AWB_START 88
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STATS_AWB_STOP 89
|
||||
#define VFE_CMD_STATS_RS_START 90
|
||||
#define VFE_CMD_STATS_RS_STOP 91
|
||||
#define VFE_CMD_STATS_CS_START 92
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STATS_CS_STOP 93
|
||||
#define VFE_CMD_STATS_SKIN_START 94
|
||||
#define VFE_CMD_STATS_SKIN_STOP 95
|
||||
#define VFE_CMD_STATS_IHIST_START 96
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STATS_IHIST_STOP 97
|
||||
#define VFE_CMD_DUMMY_10 98
|
||||
#define VFE_CMD_SYNC_TIMER_SETTING 99
|
||||
#define VFE_CMD_ASYNC_TIMER_SETTING 100
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_LIVESHOT 101
|
||||
#define VFE_CMD_LA_SETUP 102
|
||||
#define VFE_CMD_LINEARIZATION_CFG 103
|
||||
#define VFE_CMD_DEMOSAICV3 104
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_DEMOSAICV3_ABCC_CFG 105
|
||||
#define VFE_CMD_DEMOSAICV3_DBCC_CFG 106
|
||||
#define VFE_CMD_DEMOSAICV3_DBPC_CFG 107
|
||||
#define VFE_CMD_DEMOSAICV3_ABF_CFG 108
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_DEMOSAICV3_ABCC_UPDATE 109
|
||||
#define VFE_CMD_DEMOSAICV3_DBCC_UPDATE 110
|
||||
#define VFE_CMD_DEMOSAICV3_DBPC_UPDATE 111
|
||||
#define VFE_CMD_XBAR_CFG 112
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_MODULE_CFG 113
|
||||
#define VFE_CMD_ZSL 114
|
||||
#define VFE_CMD_LINEARIZATION_UPDATE 115
|
||||
#define VFE_CMD_DEMOSAICV3_ABF_UPDATE 116
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_CLF_CFG 117
|
||||
#define VFE_CMD_CLF_LUMA_UPDATE 118
|
||||
#define VFE_CMD_CLF_CHROMA_UPDATE 119
|
||||
#define VFE_CMD_PCA_ROLL_OFF_CFG 120
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_PCA_ROLL_OFF_UPDATE 121
|
||||
#define VFE_CMD_GET_REG_DUMP 122
|
||||
#define VFE_CMD_GET_LINEARIZATON_TABLE 123
|
||||
#define VFE_CMD_GET_MESH_ROLLOFF_TABLE 124
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_GET_PCA_ROLLOFF_TABLE 125
|
||||
#define VFE_CMD_GET_RGB_G_TABLE 126
|
||||
#define VFE_CMD_GET_LA_TABLE 127
|
||||
#define VFE_CMD_DEMOSAICV3_UPDATE 128
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_ACTIVE_REGION_CFG 129
|
||||
#define VFE_CMD_COLOR_PROCESSING_CONFIG 130
|
||||
#define VFE_CMD_STATS_WB_AEC_CONFIG 131
|
||||
#define VFE_CMD_STATS_WB_AEC_UPDATE 132
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_Y_GAMMA_CONFIG 133
|
||||
#define VFE_CMD_SCALE_OUTPUT1_CONFIG 134
|
||||
#define VFE_CMD_SCALE_OUTPUT2_CONFIG 135
|
||||
#define VFE_CMD_CAPTURE_RAW 136
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STOP_LIVESHOT 137
|
||||
#define VFE_CMD_RECONFIG_VFE 138
|
||||
#define VFE_CMD_STATS_REQBUF 139
|
||||
#define VFE_CMD_STATS_ENQUEUEBUF 140
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STATS_FLUSH_BUFQ 141
|
||||
#define VFE_CMD_STATS_UNREGBUF 142
|
||||
#define VFE_CMD_STATS_BG_START 143
|
||||
#define VFE_CMD_STATS_BG_STOP 144
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_STATS_BF_START 145
|
||||
#define VFE_CMD_STATS_BF_STOP 146
|
||||
#define VFE_CMD_STATS_BHIST_START 147
|
||||
#define VFE_CMD_STATS_BHIST_STOP 148
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_RESET_2 149
|
||||
#define VFE_CMD_FOV_ENC_CFG 150
|
||||
#define VFE_CMD_FOV_VIEW_CFG 151
|
||||
#define VFE_CMD_FOV_ENC_UPDATE 152
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_FOV_VIEW_UPDATE 153
|
||||
#define VFE_CMD_SCALER_ENC_CFG 154
|
||||
#define VFE_CMD_SCALER_VIEW_CFG 155
|
||||
#define VFE_CMD_SCALER_ENC_UPDATE 156
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_SCALER_VIEW_UPDATE 157
|
||||
#define VFE_CMD_COLORXFORM_ENC_CFG 158
|
||||
#define VFE_CMD_COLORXFORM_VIEW_CFG 159
|
||||
#define VFE_CMD_COLORXFORM_ENC_UPDATE 160
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_CMD_COLORXFORM_VIEW_UPDATE 161
|
||||
#define VFE_CMD_TEST_GEN_CFG 162
|
||||
struct msm_isp_cmd {
|
||||
int32_t id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint16_t length;
|
||||
void *value;
|
||||
};
|
||||
#define VPE_CMD_DUMMY_0 0
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VPE_CMD_INIT 1
|
||||
#define VPE_CMD_DEINIT 2
|
||||
#define VPE_CMD_ENABLE 3
|
||||
#define VPE_CMD_DISABLE 4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VPE_CMD_RESET 5
|
||||
#define VPE_CMD_FLUSH 6
|
||||
#define VPE_CMD_OPERATION_MODE_CFG 7
|
||||
#define VPE_CMD_INPUT_PLANE_CFG 8
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VPE_CMD_OUTPUT_PLANE_CFG 9
|
||||
#define VPE_CMD_INPUT_PLANE_UPDATE 10
|
||||
#define VPE_CMD_SCALE_CFG_TYPE 11
|
||||
#define VPE_CMD_ZOOM 13
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VPE_CMD_MAX 14
|
||||
#define MSM_PP_CMD_TYPE_NOT_USED 0
|
||||
#define MSM_PP_CMD_TYPE_VPE 1
|
||||
#define MSM_PP_CMD_TYPE_MCTL 2
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MCTL_CMD_DUMMY_0 0
|
||||
#define MCTL_CMD_GET_FRAME_BUFFER 1
|
||||
#define MCTL_CMD_PUT_FRAME_BUFFER 2
|
||||
#define MCTL_CMD_DIVERT_FRAME_PP_PATH 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MCTL_PP_EVENT_NOTUSED 0
|
||||
#define MCTL_PP_EVENT_CMD_ACK 1
|
||||
#define VPE_OPERATION_MODE_CFG_LEN 4
|
||||
#define VPE_INPUT_PLANE_CFG_LEN 24
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VPE_OUTPUT_PLANE_CFG_LEN 20
|
||||
#define VPE_INPUT_PLANE_UPDATE_LEN 12
|
||||
#define VPE_SCALER_CONFIG_LEN 260
|
||||
#define VPE_DIS_OFFSET_CFG_LEN 12
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define CAPTURE_WIDTH 1280
|
||||
#define IMEM_Y_SIZE (CAPTURE_WIDTH*16)
|
||||
#define IMEM_CBCR_SIZE (CAPTURE_WIDTH*8)
|
||||
#define IMEM_Y_PING_OFFSET 0x2E000000
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define IMEM_CBCR_PING_OFFSET (IMEM_Y_PING_OFFSET + IMEM_Y_SIZE)
|
||||
#define IMEM_Y_PONG_OFFSET (IMEM_CBCR_PING_OFFSET + IMEM_CBCR_SIZE)
|
||||
#define IMEM_CBCR_PONG_OFFSET (IMEM_Y_PONG_OFFSET + IMEM_Y_SIZE)
|
||||
struct msm_vpe_op_mode_cfg {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint8_t op_mode_cfg[VPE_OPERATION_MODE_CFG_LEN];
|
||||
};
|
||||
struct msm_vpe_input_plane_cfg {
|
||||
uint8_t input_plane_cfg[VPE_INPUT_PLANE_CFG_LEN];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct msm_vpe_output_plane_cfg {
|
||||
uint8_t output_plane_cfg[VPE_OUTPUT_PLANE_CFG_LEN];
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_vpe_input_plane_update_cfg {
|
||||
uint8_t input_plane_update_cfg[VPE_INPUT_PLANE_UPDATE_LEN];
|
||||
};
|
||||
struct msm_vpe_scaler_cfg {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint8_t scaler_cfg[VPE_SCALER_CONFIG_LEN];
|
||||
};
|
||||
struct msm_vpe_flush_frame_buffer {
|
||||
uint32_t src_buf_handle;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t dest_buf_handle;
|
||||
int path;
|
||||
};
|
||||
struct msm_mctl_pp_frame_buffer {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t buf_handle;
|
||||
int path;
|
||||
};
|
||||
struct msm_mctl_pp_divert_pp {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
int path;
|
||||
int enable;
|
||||
};
|
||||
struct msm_vpe_clock_rate {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t rate;
|
||||
};
|
||||
struct msm_pp_crop {
|
||||
uint32_t src_x;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t src_y;
|
||||
uint32_t src_w;
|
||||
uint32_t src_h;
|
||||
uint32_t dst_x;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t dst_y;
|
||||
uint32_t dst_w;
|
||||
uint32_t dst_h;
|
||||
uint8_t update_flag;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#define MSM_MCTL_PP_VPE_FRAME_ACK (1<<0)
|
||||
#define MSM_MCTL_PP_VPE_FRAME_TO_APP (1<<1)
|
||||
struct msm_mctl_pp_frame_cmd {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t cookie;
|
||||
uint8_t vpe_output_action;
|
||||
uint32_t src_buf_handle;
|
||||
uint32_t dest_buf_handle;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_pp_crop crop;
|
||||
int path;
|
||||
};
|
||||
#define VFE_OUTPUTS_MAIN_AND_PREVIEW BIT(0)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_OUTPUTS_MAIN_AND_VIDEO BIT(1)
|
||||
#define VFE_OUTPUTS_MAIN_AND_THUMB BIT(2)
|
||||
#define VFE_OUTPUTS_THUMB_AND_MAIN BIT(3)
|
||||
#define VFE_OUTPUTS_PREVIEW_AND_VIDEO BIT(4)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_OUTPUTS_VIDEO_AND_PREVIEW BIT(5)
|
||||
#define VFE_OUTPUTS_PREVIEW BIT(6)
|
||||
#define VFE_OUTPUTS_VIDEO BIT(7)
|
||||
#define VFE_OUTPUTS_RAW BIT(8)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define VFE_OUTPUTS_JPEG_AND_THUMB BIT(9)
|
||||
#define VFE_OUTPUTS_THUMB_AND_JPEG BIT(10)
|
||||
#define VFE_OUTPUTS_RDI0 BIT(11)
|
||||
#define VFE_OUTPUTS_RDI1 BIT(12)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_frame_info {
|
||||
uint32_t inst_handle;
|
||||
uint32_t path;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#endif
|
@@ -1,106 +0,0 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __LINUX_MSM_MERCURY_H
|
||||
#define __LINUX_MSM_MERCURY_H
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_MERCURY_HW_VERSION_REG 0x0004
|
||||
#define OUTPUT_H2V1 0
|
||||
#define OUTPUT_H2V2 1
|
||||
#define OUTPUT_BYTE 6
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_MERCURY_MODE_REALTIME_ENCODE 0
|
||||
#define MSM_MERCURY_MODE_OFFLINE_ENCODE 1
|
||||
#define MSM_MERCURY_MODE_REALTIME_ROTATION 2
|
||||
#define MSM_MERCURY_MODE_OFFLINE_ROTATION 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_MERCURY_EVT_RESET 1
|
||||
#define MSM_MERCURY_EVT_FRAMEDONE 2
|
||||
#define MSM_MERCURY_EVT_ERR 3
|
||||
#define MSM_MERCURY_EVT_UNBLOCK 4
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_MERCURY_HW_CMD_TYPE_READ 0
|
||||
#define MSM_MERCURY_HW_CMD_TYPE_WRITE 1
|
||||
#define MSM_MERCURY_HW_CMD_TYPE_WRITE_OR 2
|
||||
#define MSM_MERCURY_HW_CMD_TYPE_UWAIT 3
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_MERCURY_HW_CMD_TYPE_MWAIT 4
|
||||
#define MSM_MERCURY_HW_CMD_TYPE_MDELAY 5
|
||||
#define MSM_MERCURY_HW_CMD_TYPE_UDELAY 6
|
||||
#define MSM_MCR_IOCTL_MAGIC 'g'
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_MCR_IOCTL_GET_HW_VERSION _IOW(MSM_MCR_IOCTL_MAGIC, 1, struct msm_mercury_hw_cmd *)
|
||||
#define MSM_MCR_IOCTL_RESET _IOW(MSM_MCR_IOCTL_MAGIC, 2, struct msm_mercury_ctrl_cmd *)
|
||||
#define MSM_MCR_IOCTL_STOP _IOW(MSM_MCR_IOCTL_MAGIC, 3, struct msm_mercury_hw_cmds *)
|
||||
#define MSM_MCR_IOCTL_START _IOW(MSM_MCR_IOCTL_MAGIC, 4, struct msm_mercury_hw_cmds *)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_MCR_IOCTL_INPUT_BUF_CFG _IOW(MSM_MCR_IOCTL_MAGIC, 5, struct msm_mercury_buf *)
|
||||
#define MSM_MCR_IOCTL_INPUT_GET _IOW(MSM_MCR_IOCTL_MAGIC, 6, struct msm_mercury_buf *)
|
||||
#define MSM_MCR_IOCTL_INPUT_GET_UNBLOCK _IOW(MSM_MCR_IOCTL_MAGIC, 7, int)
|
||||
#define MSM_MCR_IOCTL_OUTPUT_BUF_CFG _IOW(MSM_MCR_IOCTL_MAGIC, 8, struct msm_mercury_buf *)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_MCR_IOCTL_OUTPUT_GET _IOW(MSM_MCR_IOCTL_MAGIC, 9, struct msm_mercury_buf *)
|
||||
#define MSM_MCR_IOCTL_OUTPUT_GET_UNBLOCK _IOW(MSM_MCR_IOCTL_MAGIC, 10, int)
|
||||
#define MSM_MCR_IOCTL_EVT_GET _IOW(MSM_MCR_IOCTL_MAGIC, 11, struct msm_mercury_ctrl_cmd *)
|
||||
#define MSM_MCR_IOCTL_EVT_GET_UNBLOCK _IOW(MSM_MCR_IOCTL_MAGIC, 12, int)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MSM_MCR_IOCTL_HW_CMD _IOW(MSM_MCR_IOCTL_MAGIC, 13, struct msm_mercury_hw_cmd *)
|
||||
#define MSM_MCR_IOCTL_HW_CMDS _IOW(MSM_MCR_IOCTL_MAGIC, 14, struct msm_mercury_hw_cmds *)
|
||||
#define MSM_MCR_IOCTL_TEST_DUMP_REGION _IOW(MSM_MCR_IOCTL_MAGIC, 15, unsigned long)
|
||||
struct msm_mercury_ctrl_cmd {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t type;
|
||||
uint32_t len;
|
||||
void *value;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_mercury_buf {
|
||||
uint32_t type;
|
||||
int fd;
|
||||
void *vaddr;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t y_off;
|
||||
uint32_t y_len;
|
||||
uint32_t framedone_len;
|
||||
uint32_t cbcr_off;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t cbcr_len;
|
||||
uint32_t num_of_mcu_rows;
|
||||
uint32_t offset;
|
||||
};
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_mercury_hw_cmd {
|
||||
uint32_t type:4;
|
||||
uint32_t n:12;
|
||||
uint32_t offset:16;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t mask;
|
||||
union {
|
||||
uint32_t data;
|
||||
uint32_t *pdata;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
};
|
||||
struct msm_mercury_hw_cmds {
|
||||
uint32_t m;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct msm_mercury_hw_cmd hw_cmd[1];
|
||||
};
|
||||
#endif
|
115
libc/kernel/common/sound/compress_offload.h
Normal file
115
libc/kernel/common/sound/compress_offload.h
Normal file
@@ -0,0 +1,115 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __COMPRESS_OFFLOAD_H
|
||||
#define __COMPRESS_OFFLOAD_H
|
||||
#include <linux/types.h>
|
||||
#include <sound/asound.h>
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#include <sound/compress_params.h>
|
||||
#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 1)
|
||||
struct snd_compressed_buffer {
|
||||
__u32 fragment_size;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 fragments;
|
||||
};
|
||||
struct snd_compr_params {
|
||||
struct snd_compressed_buffer buffer;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct snd_codec codec;
|
||||
__u8 no_wake_mode;
|
||||
};
|
||||
struct snd_compr_tstamp {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 byte_offset;
|
||||
__u32 copied_total;
|
||||
snd_pcm_uframes_t pcm_frames;
|
||||
snd_pcm_uframes_t pcm_io_frames;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 sampling_rate;
|
||||
uint64_t timestamp;
|
||||
};
|
||||
struct snd_compr_avail {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u64 avail;
|
||||
struct snd_compr_tstamp tstamp;
|
||||
};
|
||||
enum snd_compr_direction {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
SND_COMPRESS_PLAYBACK = 0,
|
||||
SND_COMPRESS_CAPTURE
|
||||
};
|
||||
struct snd_compr_caps {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 num_codecs;
|
||||
__u32 direction;
|
||||
__u32 min_fragment_size;
|
||||
__u32 max_fragment_size;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 min_fragments;
|
||||
__u32 max_fragments;
|
||||
__u32 codecs[MAX_NUM_CODECS];
|
||||
__u32 reserved[11];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
struct snd_compr_codec_caps {
|
||||
__u32 codec;
|
||||
__u32 num_descriptors;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS];
|
||||
};
|
||||
enum {
|
||||
SNDRV_COMPRESS_ENCODER_PADDING = 1,
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
SNDRV_COMPRESS_ENCODER_DELAY = 2,
|
||||
};
|
||||
struct snd_compr_metadata {
|
||||
__u32 key;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 value[8];
|
||||
};
|
||||
struct snd_compr_audio_info {
|
||||
uint32_t frame_size;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
uint32_t reserved[15];
|
||||
};
|
||||
#define SNDRV_COMPRESS_IOCTL_VERSION _IOR('C', 0x00, int)
|
||||
#define SNDRV_COMPRESS_GET_CAPS _IOWR('C', 0x10, struct snd_compr_caps)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11, struct snd_compr_codec_caps)
|
||||
#define SNDRV_COMPRESS_SET_PARAMS _IOW('C', 0x12, struct snd_compr_params)
|
||||
#define SNDRV_COMPRESS_GET_PARAMS _IOR('C', 0x13, struct snd_codec)
|
||||
#define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14, struct snd_compr_metadata)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SNDRV_COMPRESS_GET_METADATA _IOWR('C', 0x15, struct snd_compr_metadata)
|
||||
#define SNDRV_COMPRESS_TSTAMP _IOR('C', 0x20, struct snd_compr_tstamp)
|
||||
#define SNDRV_COMPRESS_AVAIL _IOR('C', 0x21, struct snd_compr_avail)
|
||||
#define SNDRV_COMPRESS_PAUSE _IO('C', 0x30)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SNDRV_COMPRESS_RESUME _IO('C', 0x31)
|
||||
#define SNDRV_COMPRESS_START _IO('C', 0x32)
|
||||
#define SNDRV_COMPRESS_STOP _IO('C', 0x33)
|
||||
#define SNDRV_COMPRESS_DRAIN _IO('C', 0x34)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SNDRV_COMPRESS_NEXT_TRACK _IO('C', 0x35)
|
||||
#define SNDRV_COMPRESS_PARTIAL_DRAIN _IO('C', 0x36)
|
||||
#define SND_COMPR_TRIGGER_DRAIN 7
|
||||
#define SND_COMPR_TRIGGER_NEXT_TRACK 8
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_COMPR_TRIGGER_PARTIAL_DRAIN 9
|
||||
#endif
|
265
libc/kernel/common/sound/compress_params.h
Normal file
265
libc/kernel/common/sound/compress_params.h
Normal file
@@ -0,0 +1,265 @@
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
***
|
||||
*** This header was automatically generated from a Linux kernel header
|
||||
*** of the same name, to make information necessary for userspace to
|
||||
*** call into the kernel available to libc. It contains only constants,
|
||||
*** structures, and macros generated from the original header, and thus,
|
||||
*** contains no copyrightable information.
|
||||
***
|
||||
*** To edit the content of this header, modify the corresponding
|
||||
*** source file (e.g. under external/kernel-headers/original/) then
|
||||
*** run bionic/libc/kernel/tools/update_all.py
|
||||
***
|
||||
*** Any manual change here will be lost the next time this script will
|
||||
*** be run. You've been warned!
|
||||
***
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
#ifndef __SND_COMPRESS_PARAMS_H
|
||||
#define __SND_COMPRESS_PARAMS_H
|
||||
#define MAX_NUM_CODECS 32
|
||||
#define MAX_NUM_CODEC_DESCRIPTORS 32
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define MAX_NUM_BITRATES 32
|
||||
#define MAX_NUM_FRAMES_PER_BUFFER 1
|
||||
#define COMPRESSED_META_DATA_MODE 0x10
|
||||
#define META_DATA_LEN_BYTES 36
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define Q6_AC3_DECODER 0x00010BF6
|
||||
#define Q6_EAC3_DECODER 0x00010C3C
|
||||
#define Q6_DTS 0x00010D88
|
||||
#define Q6_DTS_LBR 0x00010DBB
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOCODEC_PCM ((__u32) 0x00000001)
|
||||
#define SND_AUDIOCODEC_MP3 ((__u32) 0x00000002)
|
||||
#define SND_AUDIOCODEC_AMR ((__u32) 0x00000003)
|
||||
#define SND_AUDIOCODEC_AMRWB ((__u32) 0x00000004)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOCODEC_AMRWBPLUS ((__u32) 0x00000005)
|
||||
#define SND_AUDIOCODEC_AAC ((__u32) 0x00000006)
|
||||
#define SND_AUDIOCODEC_WMA ((__u32) 0x00000007)
|
||||
#define SND_AUDIOCODEC_REAL ((__u32) 0x00000008)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOCODEC_VORBIS ((__u32) 0x00000009)
|
||||
#define SND_AUDIOCODEC_FLAC ((__u32) 0x0000000A)
|
||||
#define SND_AUDIOCODEC_IEC61937 ((__u32) 0x0000000B)
|
||||
#define SND_AUDIOCODEC_G723_1 ((__u32) 0x0000000C)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOCODEC_G729 ((__u32) 0x0000000D)
|
||||
#define SND_AUDIOCODEC_AC3 ((__u32) 0x0000000E)
|
||||
#define SND_AUDIOCODEC_DTS ((__u32) 0x0000000F)
|
||||
#define SND_AUDIOCODEC_AC3_PASS_THROUGH ((__u32) 0x00000010)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOCODEC_WMA_PRO ((__u32) 0x00000011)
|
||||
#define SND_AUDIOCODEC_DTS_PASS_THROUGH ((__u32) 0x00000012)
|
||||
#define SND_AUDIOCODEC_DTS_LBR ((__u32) 0x00000013)
|
||||
#define SND_AUDIOCODEC_DTS_TRANSCODE_LOOPBACK ((__u32) 0x00000014)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_DTS_TRANSCODE_LOOPBACK
|
||||
#define SND_AUDIOPROFILE_PCM ((__u32) 0x00000001)
|
||||
#define SND_AUDIOCHANMODE_MP3_MONO ((__u32) 0x00000001)
|
||||
#define SND_AUDIOCHANMODE_MP3_STEREO ((__u32) 0x00000002)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOCHANMODE_MP3_JOINTSTEREO ((__u32) 0x00000004)
|
||||
#define SND_AUDIOCHANMODE_MP3_DUAL ((__u32) 0x00000008)
|
||||
#define SND_AUDIOPROFILE_AMR ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_AMR_DTX_OFF ((__u32) 0x00000001)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_AMR_VAD1 ((__u32) 0x00000002)
|
||||
#define SND_AUDIOMODE_AMR_VAD2 ((__u32) 0x00000004)
|
||||
#define SND_AUDIOSTREAMFORMAT_UNDEFINED ((__u32) 0x00000000)
|
||||
#define SND_AUDIOSTREAMFORMAT_CONFORMANCE ((__u32) 0x00000001)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOSTREAMFORMAT_IF1 ((__u32) 0x00000002)
|
||||
#define SND_AUDIOSTREAMFORMAT_IF2 ((__u32) 0x00000004)
|
||||
#define SND_AUDIOSTREAMFORMAT_FSF ((__u32) 0x00000008)
|
||||
#define SND_AUDIOSTREAMFORMAT_RTPPAYLOAD ((__u32) 0x00000010)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOSTREAMFORMAT_ITU ((__u32) 0x00000020)
|
||||
#define SND_AUDIOPROFILE_AMRWB ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_AMRWB_DTX_OFF ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_AMRWB_VAD1 ((__u32) 0x00000002)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_AMRWB_VAD2 ((__u32) 0x00000004)
|
||||
#define SND_AUDIOPROFILE_AMRWBPLUS ((__u32) 0x00000001)
|
||||
#define SND_AUDIOPROFILE_AAC ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_AAC_MAIN ((__u32) 0x00000001)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_AAC_LC ((__u32) 0x00000002)
|
||||
#define SND_AUDIOMODE_AAC_SSR ((__u32) 0x00000004)
|
||||
#define SND_AUDIOMODE_AAC_LTP ((__u32) 0x00000008)
|
||||
#define SND_AUDIOMODE_AAC_HE ((__u32) 0x00000010)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_AAC_SCALABLE ((__u32) 0x00000020)
|
||||
#define SND_AUDIOMODE_AAC_ERLC ((__u32) 0x00000040)
|
||||
#define SND_AUDIOMODE_AAC_LD ((__u32) 0x00000080)
|
||||
#define SND_AUDIOMODE_AAC_HE_PS ((__u32) 0x00000100)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_AAC_HE_MPS ((__u32) 0x00000200)
|
||||
#define SND_AUDIOSTREAMFORMAT_MP2ADTS ((__u32) 0x00000001)
|
||||
#define SND_AUDIOSTREAMFORMAT_MP4ADTS ((__u32) 0x00000002)
|
||||
#define SND_AUDIOSTREAMFORMAT_MP4LOAS ((__u32) 0x00000004)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOSTREAMFORMAT_MP4LATM ((__u32) 0x00000008)
|
||||
#define SND_AUDIOSTREAMFORMAT_ADIF ((__u32) 0x00000010)
|
||||
#define SND_AUDIOSTREAMFORMAT_MP4FF ((__u32) 0x00000020)
|
||||
#define SND_AUDIOSTREAMFORMAT_RAW ((__u32) 0x00000040)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOPROFILE_WMA7 ((__u32) 0x00000001)
|
||||
#define SND_AUDIOPROFILE_WMA8 ((__u32) 0x00000002)
|
||||
#define SND_AUDIOPROFILE_WMA9 ((__u32) 0x00000004)
|
||||
#define SND_AUDIOPROFILE_WMA10 ((__u32) 0x00000008)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_WMA_LEVEL1 ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_WMA_LEVEL2 ((__u32) 0x00000002)
|
||||
#define SND_AUDIOMODE_WMA_LEVEL3 ((__u32) 0x00000004)
|
||||
#define SND_AUDIOMODE_WMA_LEVEL4 ((__u32) 0x00000008)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_WMAPRO_LEVELM0 ((__u32) 0x00000010)
|
||||
#define SND_AUDIOMODE_WMAPRO_LEVELM1 ((__u32) 0x00000020)
|
||||
#define SND_AUDIOMODE_WMAPRO_LEVELM2 ((__u32) 0x00000040)
|
||||
#define SND_AUDIOMODE_WMAPRO_LEVELM3 ((__u32) 0x00000080)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOSTREAMFORMAT_WMA_ASF ((__u32) 0x00000001)
|
||||
#define SND_AUDIOSTREAMFORMAT_WMA_NOASF_HDR ((__u32) 0x00000002)
|
||||
#define SND_AUDIOPROFILE_REALAUDIO ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_REALAUDIO_G2 ((__u32) 0x00000001)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_REALAUDIO_8 ((__u32) 0x00000002)
|
||||
#define SND_AUDIOMODE_REALAUDIO_10 ((__u32) 0x00000004)
|
||||
#define SND_AUDIOMODE_REALAUDIO_SURROUND ((__u32) 0x00000008)
|
||||
#define SND_AUDIOPROFILE_VORBIS ((__u32) 0x00000001)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_VORBIS ((__u32) 0x00000001)
|
||||
#define SND_AUDIOPROFILE_FLAC ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_FLAC_LEVEL0 ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_FLAC_LEVEL1 ((__u32) 0x00000002)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_FLAC_LEVEL2 ((__u32) 0x00000004)
|
||||
#define SND_AUDIOMODE_FLAC_LEVEL3 ((__u32) 0x00000008)
|
||||
#define SND_AUDIOMODE_FLAC_LEVEL4 ((__u32) 0x00000010)
|
||||
#define SND_AUDIOMODE_FLAC_LEVEL5 ((__u32) 0x00000020)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_FLAC_LEVEL6 ((__u32) 0x00000040)
|
||||
#define SND_AUDIOMODE_FLAC_LEVEL7 ((__u32) 0x00000080)
|
||||
#define SND_AUDIOMODE_FLAC_LEVEL8 ((__u32) 0x00000100)
|
||||
#define SND_AUDIOSTREAMFORMAT_FLAC ((__u32) 0x00000001)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOSTREAMFORMAT_FLAC_OGG ((__u32) 0x00000002)
|
||||
#define SND_AUDIOPROFILE_IEC61937 ((__u32) 0x00000001)
|
||||
#define SND_AUDIOPROFILE_IEC61937_SPDIF ((__u32) 0x00000002)
|
||||
#define SND_AUDIOMODE_IEC_REF_STREAM_HEADER ((__u32) 0x00000000)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_IEC_LPCM ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_IEC_AC3 ((__u32) 0x00000002)
|
||||
#define SND_AUDIOMODE_IEC_MPEG1 ((__u32) 0x00000004)
|
||||
#define SND_AUDIOMODE_IEC_MP3 ((__u32) 0x00000008)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_IEC_MPEG2 ((__u32) 0x00000010)
|
||||
#define SND_AUDIOMODE_IEC_AACLC ((__u32) 0x00000020)
|
||||
#define SND_AUDIOMODE_IEC_DTS ((__u32) 0x00000040)
|
||||
#define SND_AUDIOMODE_IEC_ATRAC ((__u32) 0x00000080)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_IEC_SACD ((__u32) 0x00000100)
|
||||
#define SND_AUDIOMODE_IEC_EAC3 ((__u32) 0x00000200)
|
||||
#define SND_AUDIOMODE_IEC_DTS_HD ((__u32) 0x00000400)
|
||||
#define SND_AUDIOMODE_IEC_MLP ((__u32) 0x00000800)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_IEC_DST ((__u32) 0x00001000)
|
||||
#define SND_AUDIOMODE_IEC_WMAPRO ((__u32) 0x00002000)
|
||||
#define SND_AUDIOMODE_IEC_REF_CXT ((__u32) 0x00004000)
|
||||
#define SND_AUDIOMODE_IEC_HE_AAC ((__u32) 0x00008000)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_IEC_HE_AAC2 ((__u32) 0x00010000)
|
||||
#define SND_AUDIOMODE_IEC_MPEG_SURROUND ((__u32) 0x00020000)
|
||||
#define SND_AUDIOPROFILE_G723_1 ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_G723_1_ANNEX_A ((__u32) 0x00000001)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_G723_1_ANNEX_B ((__u32) 0x00000002)
|
||||
#define SND_AUDIOMODE_G723_1_ANNEX_C ((__u32) 0x00000004)
|
||||
#define SND_AUDIOPROFILE_G729 ((__u32) 0x00000001)
|
||||
#define SND_AUDIOMODE_G729_ANNEX_A ((__u32) 0x00000001)
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
#define SND_AUDIOMODE_G729_ANNEX_B ((__u32) 0x00000002)
|
||||
#define SND_RATECONTROLMODE_CONSTANTBITRATE ((__u32) 0x00000001)
|
||||
#define SND_RATECONTROLMODE_VARIABLEBITRATE ((__u32) 0x00000002)
|
||||
struct snd_enc_wma {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 super_block_align;
|
||||
__u32 bits_per_sample;
|
||||
__u32 channelmask;
|
||||
__u32 encodeopt;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 encodeopt1;
|
||||
__u32 encodeopt2;
|
||||
};
|
||||
struct snd_enc_vorbis {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__s32 quality;
|
||||
__u32 managed;
|
||||
__u32 max_bit_rate;
|
||||
__u32 min_bit_rate;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 downmix;
|
||||
};
|
||||
struct snd_enc_real {
|
||||
__u32 quant_bits;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 start_region;
|
||||
__u32 num_regions;
|
||||
};
|
||||
struct snd_enc_flac {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 num;
|
||||
__u32 gain;
|
||||
};
|
||||
struct snd_enc_generic {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 bw;
|
||||
__s32 reserved[15];
|
||||
};
|
||||
union snd_codec_options {
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct snd_enc_wma wma;
|
||||
struct snd_enc_vorbis vorbis;
|
||||
struct snd_enc_real real;
|
||||
struct snd_enc_flac flac;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
struct snd_enc_generic generic;
|
||||
};
|
||||
struct snd_codec_desc {
|
||||
__u32 max_ch;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 sample_rates;
|
||||
__u32 bit_rate[MAX_NUM_BITRATES];
|
||||
__u32 num_bitrates;
|
||||
__u32 rate_control;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 profiles;
|
||||
__u32 modes;
|
||||
__u32 formats;
|
||||
__u32 min_buffer;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 reserved[15];
|
||||
};
|
||||
struct snd_codec {
|
||||
__u32 id;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 ch_in;
|
||||
__u32 ch_out;
|
||||
__u32 sample_rate;
|
||||
__u32 bit_rate;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 rate_control;
|
||||
__u32 profile;
|
||||
__u32 level;
|
||||
__u32 ch_mode;
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
__u32 format;
|
||||
__u32 align;
|
||||
union snd_codec_options options;
|
||||
__u32 reserved[3];
|
||||
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
|
||||
};
|
||||
#endif
|
@@ -56,6 +56,7 @@
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include "arpa_nameser.h"
|
||||
@@ -69,6 +70,7 @@
|
||||
#include <stdio.h>
|
||||
#include <strings.h>
|
||||
#include <syslog.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifndef LOG_AUTH
|
||||
# define LOG_AUTH 0
|
||||
@@ -80,6 +82,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
// This should be synchronized to ResponseCode.h
|
||||
static const int DnsProxyQueryResult = 222;
|
||||
|
||||
static const char const AskedForGot[] =
|
||||
"gethostby*.getanswer: asked for \"%s\", got \"%s\"";
|
||||
|
||||
@@ -121,7 +126,7 @@ static struct hostent *_gethtbyname2(const char *, int);
|
||||
static int _dns_gethtbyaddr(void *, void *, va_list);
|
||||
static int _dns_gethtbyname(void *, void *, va_list);
|
||||
|
||||
static struct hostent *gethostbyname_internal(const char *, int, res_state);
|
||||
static struct hostent *gethostbyname_internal(const char *, int, res_state, const char *);
|
||||
|
||||
static const ns_src default_dns_files[] = {
|
||||
{ NSSRC_FILES, NS_SUCCESS },
|
||||
@@ -490,40 +495,136 @@ gethostbyname(const char *name)
|
||||
|
||||
assert(name != NULL);
|
||||
|
||||
/* try IPv6 first - if that fails do IPv4 */
|
||||
if (res->options & RES_USE_INET6) {
|
||||
hp = gethostbyname_internal(name, AF_INET6, res);
|
||||
hp = gethostbyname_internal(name, AF_INET6, res, NULL);
|
||||
if (hp) {
|
||||
__res_put_state(res);
|
||||
return hp;
|
||||
}
|
||||
}
|
||||
hp = gethostbyname_internal(name, AF_INET, res);
|
||||
hp = gethostbyname_internal(name, AF_INET, res, NULL);
|
||||
__res_put_state(res);
|
||||
return hp;
|
||||
}
|
||||
|
||||
struct hostent *
|
||||
gethostbyname2(const char *name, int af)
|
||||
{
|
||||
return android_gethostbynameforiface(name, af, NULL);
|
||||
}
|
||||
|
||||
struct hostent *
|
||||
android_gethostbynameforiface(const char *name, int af, const char *iface)
|
||||
{
|
||||
struct hostent *hp;
|
||||
res_state res = __res_get_state();
|
||||
|
||||
if (res == NULL)
|
||||
return NULL;
|
||||
hp = gethostbyname_internal(name, af, res);
|
||||
hp = gethostbyname_internal(name, af, res, iface);
|
||||
__res_put_state(res);
|
||||
return hp;
|
||||
}
|
||||
|
||||
|
||||
static FILE* android_open_proxy()
|
||||
{
|
||||
int sock;
|
||||
const int one = 1;
|
||||
struct sockaddr_un proxy_addr;
|
||||
|
||||
sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (sock < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
|
||||
memset(&proxy_addr, 0, sizeof(proxy_addr));
|
||||
proxy_addr.sun_family = AF_UNIX;
|
||||
strlcpy(proxy_addr.sun_path, "/dev/socket/dnsproxyd", sizeof(proxy_addr.sun_path));
|
||||
if (TEMP_FAILURE_RETRY(connect(sock,
|
||||
(const struct sockaddr*) &proxy_addr,
|
||||
sizeof(proxy_addr))) != 0) {
|
||||
close(sock);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return fdopen(sock, "r+");
|
||||
}
|
||||
|
||||
static struct hostent *
|
||||
gethostbyname_internal(const char *name, int af, res_state res)
|
||||
android_read_hostent(FILE* proxy)
|
||||
{
|
||||
uint32_t size;
|
||||
char buf[4];
|
||||
if (fread(buf, 1, sizeof(buf), proxy) != sizeof(buf)) return NULL;
|
||||
|
||||
/* This is reading serialized data from system/netd/DnsProxyListener.cpp
|
||||
* and changes here need to be matched there */
|
||||
int result_code = strtol(buf, NULL, 10);
|
||||
if (result_code != DnsProxyQueryResult) {
|
||||
fread(&size, 1, sizeof(size), proxy);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
|
||||
size = ntohl(size);
|
||||
res_static rs = __res_get_static();
|
||||
memset(&rs->host, 0, sizeof(rs->host));
|
||||
char *ptr = rs->hostbuf;
|
||||
|
||||
if (fread(ptr, 1, size, proxy) != size) return NULL;
|
||||
ptr += size;
|
||||
rs->host.h_name = rs->hostbuf;
|
||||
|
||||
char **aliases = rs->host_aliases;
|
||||
rs->host.h_aliases = rs->host_aliases;
|
||||
while (1) {
|
||||
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
|
||||
size = ntohl(size);
|
||||
|
||||
if (size == 0) {
|
||||
*aliases = NULL;
|
||||
break;
|
||||
}
|
||||
if (fread(ptr, 1, size, proxy) != size) return NULL;
|
||||
*aliases++ = ptr;
|
||||
ptr += size;
|
||||
}
|
||||
|
||||
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
|
||||
rs->host.h_addrtype = ntohl(size);
|
||||
|
||||
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
|
||||
rs->host.h_length = ntohl(size);
|
||||
|
||||
char **addrs = rs->h_addr_ptrs;
|
||||
rs->host.h_addr_list = rs->h_addr_ptrs;
|
||||
while (1) {
|
||||
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
|
||||
size = ntohl(size);
|
||||
if (size == 0) {
|
||||
*addrs = NULL;
|
||||
break;
|
||||
}
|
||||
if (fread(ptr, 1, size, proxy) != size) return NULL;
|
||||
*addrs++ = ptr;
|
||||
ptr += size;
|
||||
}
|
||||
|
||||
return &rs->host;
|
||||
}
|
||||
|
||||
|
||||
static struct hostent *
|
||||
gethostbyname_internal_real(const char *name, int af, res_state res)
|
||||
{
|
||||
const char *cp;
|
||||
char *bp, *ep;
|
||||
int size;
|
||||
struct hostent *hp;
|
||||
struct resolv_cache* cache;
|
||||
res_static rs = __res_get_static();
|
||||
res_static rs = __res_get_static();
|
||||
|
||||
static const ns_dtab dtab[] = {
|
||||
NS_FILES_CB(_gethtbyname, NULL)
|
||||
@@ -632,14 +733,84 @@ gethostbyname_internal(const char *name, int af, res_state res)
|
||||
if (nsdispatch(&hp, dtab, NSDB_HOSTS, "gethostbyname",
|
||||
default_dns_files, name, strlen(name), af) != NS_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
h_errno = NETDB_SUCCESS;
|
||||
return hp;
|
||||
}
|
||||
|
||||
|
||||
// very similar in proxy-ness to android_getaddrinfo_proxy
|
||||
static struct hostent *
|
||||
gethostbyname_internal(const char *name, int af, res_state res, const char *iface)
|
||||
{
|
||||
const char *cache_mode = getenv("ANDROID_DNS_MODE");
|
||||
FILE* proxy = NULL;
|
||||
struct hostent *result = NULL;
|
||||
|
||||
if (cache_mode != NULL && strcmp(cache_mode, "local") == 0) {
|
||||
res_setiface(res, iface);
|
||||
return gethostbyname_internal_real(name, af, res);
|
||||
}
|
||||
|
||||
proxy = android_open_proxy();
|
||||
if (proxy == NULL) goto exit;
|
||||
|
||||
/* This is writing to system/netd/DnsProxyListener.cpp and changes
|
||||
* here need to be matched there */
|
||||
if (fprintf(proxy, "gethostbyname %s %s %d",
|
||||
iface == NULL ? "^" : iface,
|
||||
name == NULL ? "^" : name,
|
||||
af) < 0) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
result = android_read_hostent(proxy);
|
||||
|
||||
exit:
|
||||
if (proxy != NULL) {
|
||||
fclose(proxy);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
struct hostent *
|
||||
gethostbyaddr(const void *addr,
|
||||
socklen_t len, int af)
|
||||
android_gethostbyaddrforiface_proxy(const void *addr,
|
||||
socklen_t len, int af, const char* iface)
|
||||
{
|
||||
struct hostent *result = NULL;
|
||||
FILE* proxy = android_open_proxy();
|
||||
|
||||
if (proxy == NULL) goto exit;
|
||||
|
||||
char buf[INET6_ADDRSTRLEN]; //big enough for IPv4 and IPv6
|
||||
const char * addrStr = inet_ntop(af, addr, buf, sizeof(buf));
|
||||
if (addrStr == NULL) goto exit;
|
||||
|
||||
if (fprintf(proxy, "gethostbyaddr %s %d %d %s",
|
||||
addrStr, len, af, iface == NULL ? "^" : iface) < 0) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
result = android_read_hostent(proxy);
|
||||
exit:
|
||||
if (proxy != NULL) {
|
||||
fclose(proxy);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
struct hostent *
|
||||
android_gethostbyaddrforiface_real(const void *addr,
|
||||
socklen_t len, int af, const char* iface)
|
||||
{
|
||||
const u_char *uaddr = (const u_char *)addr;
|
||||
socklen_t size;
|
||||
@@ -687,12 +858,31 @@ gethostbyaddr(const void *addr,
|
||||
hp = NULL;
|
||||
h_errno = NETDB_INTERNAL;
|
||||
if (nsdispatch(&hp, dtab, NSDB_HOSTS, "gethostbyaddr",
|
||||
default_dns_files, uaddr, len, af) != NS_SUCCESS)
|
||||
default_dns_files, uaddr, len, af, iface) != NS_SUCCESS)
|
||||
return NULL;
|
||||
h_errno = NETDB_SUCCESS;
|
||||
return hp;
|
||||
}
|
||||
|
||||
struct hostent *
|
||||
android_gethostbyaddrforiface(const void *addr, socklen_t len, int af, const char* iface)
|
||||
{
|
||||
const char *cache_mode = getenv("ANDROID_DNS_MODE");
|
||||
|
||||
if (cache_mode == NULL || strcmp(cache_mode, "local") != 0) {
|
||||
return android_gethostbyaddrforiface_proxy(addr, len, af, iface);
|
||||
} else {
|
||||
return android_gethostbyaddrforiface_real(addr,len, af,iface);
|
||||
}
|
||||
}
|
||||
|
||||
struct hostent *
|
||||
gethostbyaddr(const void *addr, socklen_t len, int af)
|
||||
{
|
||||
return android_gethostbyaddrforiface(addr, len, af, NULL);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_sethtent(int f)
|
||||
{
|
||||
@@ -1124,6 +1314,7 @@ _dns_gethtbyaddr(void *rv, void *cb_data, va_list ap)
|
||||
const unsigned char *uaddr;
|
||||
int len, af, advance;
|
||||
res_state res;
|
||||
const char* iface;
|
||||
res_static rs = __res_get_static();
|
||||
|
||||
assert(rv != NULL);
|
||||
@@ -1131,6 +1322,7 @@ _dns_gethtbyaddr(void *rv, void *cb_data, va_list ap)
|
||||
uaddr = va_arg(ap, unsigned char *);
|
||||
len = va_arg(ap, int);
|
||||
af = va_arg(ap, int);
|
||||
iface = va_arg(ap, char *);
|
||||
|
||||
switch (af) {
|
||||
case AF_INET:
|
||||
@@ -1172,6 +1364,7 @@ _dns_gethtbyaddr(void *rv, void *cb_data, va_list ap)
|
||||
free(buf);
|
||||
return NS_NOTFOUND;
|
||||
}
|
||||
res_setiface(res, iface);
|
||||
n = res_nquery(res, qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf));
|
||||
if (n < 0) {
|
||||
free(buf);
|
||||
|
@@ -214,7 +214,7 @@ struct res_target {
|
||||
|
||||
static int str2number(const char *);
|
||||
static int explore_fqdn(const struct addrinfo *, const char *,
|
||||
const char *, struct addrinfo **);
|
||||
const char *, struct addrinfo **, const char *iface);
|
||||
static int explore_null(const struct addrinfo *,
|
||||
const char *, struct addrinfo **);
|
||||
static int explore_numeric(const struct addrinfo *, const char *,
|
||||
@@ -402,17 +402,15 @@ _have_ipv4() {
|
||||
return _test_connect(PF_INET, &addr.generic, sizeof(addr.in));
|
||||
}
|
||||
|
||||
// Returns 0 on success, else returns non-zero on error (in which case
|
||||
// getaddrinfo should continue as normal)
|
||||
// Returns 0 on success, else returns on error.
|
||||
static int
|
||||
android_getaddrinfo_proxy(
|
||||
const char *hostname, const char *servname,
|
||||
const struct addrinfo *hints, struct addrinfo **res)
|
||||
const struct addrinfo *hints, struct addrinfo **res, const char *iface)
|
||||
{
|
||||
int sock;
|
||||
const int one = 1;
|
||||
struct sockaddr_un proxy_addr;
|
||||
const char* cache_mode = getenv("ANDROID_DNS_MODE");
|
||||
FILE* proxy = NULL;
|
||||
int success = 0;
|
||||
|
||||
@@ -421,33 +419,17 @@ android_getaddrinfo_proxy(
|
||||
// allocated in the process (before failing).
|
||||
*res = NULL;
|
||||
|
||||
if (cache_mode != NULL && strcmp(cache_mode, "local") == 0) {
|
||||
// Don't use the proxy in local mode. This is used by the
|
||||
// proxy itself.
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Temporary cautious hack to disable the DNS proxy for processes
|
||||
// requesting special treatment. Ideally the DNS proxy should
|
||||
// accomodate these apps, though.
|
||||
char propname[PROP_NAME_MAX];
|
||||
char propvalue[PROP_VALUE_MAX];
|
||||
snprintf(propname, sizeof(propname), "net.dns1.%d", getpid());
|
||||
if (__system_property_get(propname, propvalue) > 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Bogus things we can't serialize. Don't use the proxy.
|
||||
// Bogus things we can't serialize. Don't use the proxy. These will fail - let them.
|
||||
if ((hostname != NULL &&
|
||||
strcspn(hostname, " \n\r\t^'\"") != strlen(hostname)) ||
|
||||
(servname != NULL &&
|
||||
strcspn(servname, " \n\r\t^'\"") != strlen(servname))) {
|
||||
return -1;
|
||||
return EAI_NODATA;
|
||||
}
|
||||
|
||||
sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (sock < 0) {
|
||||
return -1;
|
||||
return EAI_NODATA;
|
||||
}
|
||||
|
||||
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
|
||||
@@ -459,18 +441,19 @@ android_getaddrinfo_proxy(
|
||||
(const struct sockaddr*) &proxy_addr,
|
||||
sizeof(proxy_addr))) != 0) {
|
||||
close(sock);
|
||||
return -1;
|
||||
return EAI_NODATA;
|
||||
}
|
||||
|
||||
// Send the request.
|
||||
proxy = fdopen(sock, "r+");
|
||||
if (fprintf(proxy, "getaddrinfo %s %s %d %d %d %d",
|
||||
if (fprintf(proxy, "getaddrinfo %s %s %d %d %d %d %s",
|
||||
hostname == NULL ? "^" : hostname,
|
||||
servname == NULL ? "^" : servname,
|
||||
hints == NULL ? -1 : hints->ai_flags,
|
||||
hints == NULL ? -1 : hints->ai_family,
|
||||
hints == NULL ? -1 : hints->ai_socktype,
|
||||
hints == NULL ? -1 : hints->ai_protocol) < 0) {
|
||||
hints == NULL ? -1 : hints->ai_protocol,
|
||||
iface == NULL ? "^" : iface) < 0) {
|
||||
goto exit;
|
||||
}
|
||||
// literal NULL byte at end, required by FrameworkListener
|
||||
@@ -488,6 +471,7 @@ android_getaddrinfo_proxy(
|
||||
int result_code = (int)strtol(buf, NULL, 10);
|
||||
// verify the code itself
|
||||
if (result_code != DnsProxyQueryResult ) {
|
||||
fread(buf, 1, sizeof(buf), proxy);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -580,19 +564,25 @@ exit:
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Proxy failed; fall through to local
|
||||
// resolver case. But first clean up any
|
||||
// memory we might've allocated.
|
||||
// Proxy failed;
|
||||
// clean up memory we might've allocated.
|
||||
if (*res) {
|
||||
freeaddrinfo(*res);
|
||||
*res = NULL;
|
||||
}
|
||||
return -1;
|
||||
return EAI_NODATA;
|
||||
}
|
||||
|
||||
int
|
||||
getaddrinfo(const char *hostname, const char *servname,
|
||||
const struct addrinfo *hints, struct addrinfo **res)
|
||||
{
|
||||
return android_getaddrinfoforiface(hostname, servname, hints, NULL, res);
|
||||
}
|
||||
|
||||
int
|
||||
android_getaddrinfoforiface(const char *hostname, const char *servname,
|
||||
const struct addrinfo *hints, const char *iface, struct addrinfo **res)
|
||||
{
|
||||
struct addrinfo sentinel;
|
||||
struct addrinfo *cur;
|
||||
@@ -601,12 +591,12 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||
struct addrinfo ai0;
|
||||
struct addrinfo *pai;
|
||||
const struct explore *ex;
|
||||
const char* cache_mode = getenv("ANDROID_DNS_MODE");
|
||||
|
||||
/* hostname is allowed to be NULL */
|
||||
/* servname is allowed to be NULL */
|
||||
/* hints is allowed to be NULL */
|
||||
assert(res != NULL);
|
||||
|
||||
memset(&sentinel, 0, sizeof(sentinel));
|
||||
cur = &sentinel;
|
||||
pai = &ai;
|
||||
@@ -739,9 +729,10 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||
/*
|
||||
* BEGIN ANDROID CHANGES; proxying to the cache
|
||||
*/
|
||||
if (android_getaddrinfo_proxy(hostname, servname, hints, res) == 0) {
|
||||
return 0;
|
||||
}
|
||||
if (cache_mode == NULL || strcmp(cache_mode, "local") != 0) {
|
||||
// we're not the proxy - pass the request to them
|
||||
return android_getaddrinfo_proxy(hostname, servname, hints, res, iface);
|
||||
}
|
||||
|
||||
/*
|
||||
* hostname as alphabetical name.
|
||||
@@ -770,7 +761,7 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||
pai->ai_protocol = ex->e_protocol;
|
||||
|
||||
error = explore_fqdn(pai, hostname, servname,
|
||||
&cur->ai_next);
|
||||
&cur->ai_next, iface);
|
||||
|
||||
while (cur && cur->ai_next)
|
||||
cur = cur->ai_next;
|
||||
@@ -803,7 +794,7 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||
*/
|
||||
static int
|
||||
explore_fqdn(const struct addrinfo *pai, const char *hostname,
|
||||
const char *servname, struct addrinfo **res)
|
||||
const char *servname, struct addrinfo **res, const char *iface)
|
||||
{
|
||||
struct addrinfo *result;
|
||||
struct addrinfo *cur;
|
||||
@@ -829,7 +820,7 @@ explore_fqdn(const struct addrinfo *pai, const char *hostname,
|
||||
return 0;
|
||||
|
||||
switch (nsdispatch(&result, dtab, NSDB_HOSTS, "getaddrinfo",
|
||||
default_dns_files, hostname, pai)) {
|
||||
default_dns_files, hostname, pai, iface)) {
|
||||
case NS_TRYAGAIN:
|
||||
error = EAI_AGAIN;
|
||||
goto free;
|
||||
@@ -1527,10 +1518,8 @@ _get_scope(const struct sockaddr *addr)
|
||||
return IPV6_ADDR_SCOPE_LINKLOCAL;
|
||||
} else {
|
||||
/*
|
||||
* According to draft-ietf-6man-rfc3484-revise-01 section 2.3,
|
||||
* it is best not to treat the private IPv4 ranges
|
||||
* (10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16) as being
|
||||
* in a special scope, so we don't.
|
||||
* RFC 6724 section 3.2. Other IPv4 addresses, including private addresses
|
||||
* and shared addresses (100.64.0.0/10), are assigned global scope.
|
||||
*/
|
||||
return IPV6_ADDR_SCOPE_GLOBAL;
|
||||
}
|
||||
@@ -1559,7 +1548,7 @@ _get_scope(const struct sockaddr *addr)
|
||||
|
||||
/*
|
||||
* Get the label for a given IPv4/IPv6 address.
|
||||
* RFC 3484, section 2.1, plus changes from draft-ietf-6man-rfc3484-revise-01.
|
||||
* RFC 6724, section 2.1.
|
||||
*/
|
||||
|
||||
/*ARGSUSED*/
|
||||
@@ -1567,27 +1556,28 @@ static int
|
||||
_get_label(const struct sockaddr *addr)
|
||||
{
|
||||
if (addr->sa_family == AF_INET) {
|
||||
return 3;
|
||||
return 4;
|
||||
} else if (addr->sa_family == AF_INET6) {
|
||||
const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6 *)addr;
|
||||
const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6 *) addr;
|
||||
if (IN6_IS_ADDR_LOOPBACK(&addr6->sin6_addr)) {
|
||||
return 0;
|
||||
} else if (IN6_IS_ADDR_ULA(&addr6->sin6_addr)) {
|
||||
return 1;
|
||||
} else if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) {
|
||||
return 3;
|
||||
} else if (IN6_IS_ADDR_6TO4(&addr6->sin6_addr)) {
|
||||
return 4;
|
||||
} else if (IN6_IS_ADDR_6TO4(&addr6->sin6_addr)) {
|
||||
return 2;
|
||||
} else if (IN6_IS_ADDR_TEREDO(&addr6->sin6_addr)) {
|
||||
return 5;
|
||||
} else if (IN6_IS_ADDR_ULA(&addr6->sin6_addr)) {
|
||||
return 13;
|
||||
} else if (IN6_IS_ADDR_V4COMPAT(&addr6->sin6_addr)) {
|
||||
return 10;
|
||||
return 3;
|
||||
} else if (IN6_IS_ADDR_SITELOCAL(&addr6->sin6_addr)) {
|
||||
return 11;
|
||||
} else if (IN6_IS_ADDR_6BONE(&addr6->sin6_addr)) {
|
||||
return 12;
|
||||
} else {
|
||||
return 2;
|
||||
/* All other IPv6 addresses, including global unicast addresses. */
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
@@ -1600,7 +1590,7 @@ _get_label(const struct sockaddr *addr)
|
||||
|
||||
/*
|
||||
* Get the precedence for a given IPv4/IPv6 address.
|
||||
* RFC 3484, section 2.1, plus changes from draft-ietf-6man-rfc3484-revise-01.
|
||||
* RFC 6724, section 2.1.
|
||||
*/
|
||||
|
||||
/*ARGSUSED*/
|
||||
@@ -1608,24 +1598,25 @@ static int
|
||||
_get_precedence(const struct sockaddr *addr)
|
||||
{
|
||||
if (addr->sa_family == AF_INET) {
|
||||
return 30;
|
||||
return 35;
|
||||
} else if (addr->sa_family == AF_INET6) {
|
||||
const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6 *)addr;
|
||||
if (IN6_IS_ADDR_LOOPBACK(&addr6->sin6_addr)) {
|
||||
return 60;
|
||||
} else if (IN6_IS_ADDR_ULA(&addr6->sin6_addr)) {
|
||||
return 50;
|
||||
} else if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) {
|
||||
return 30;
|
||||
return 35;
|
||||
} else if (IN6_IS_ADDR_6TO4(&addr6->sin6_addr)) {
|
||||
return 20;
|
||||
return 30;
|
||||
} else if (IN6_IS_ADDR_TEREDO(&addr6->sin6_addr)) {
|
||||
return 10;
|
||||
return 5;
|
||||
} else if (IN6_IS_ADDR_ULA(&addr6->sin6_addr)) {
|
||||
return 3;
|
||||
} else if (IN6_IS_ADDR_V4COMPAT(&addr6->sin6_addr) ||
|
||||
IN6_IS_ADDR_SITELOCAL(&addr6->sin6_addr) ||
|
||||
IN6_IS_ADDR_6BONE(&addr6->sin6_addr)) {
|
||||
return 1;
|
||||
} else {
|
||||
/* All other IPv6 addresses, including global unicast addresses. */
|
||||
return 40;
|
||||
}
|
||||
} else {
|
||||
@@ -1664,12 +1655,12 @@ _common_prefix_len(const struct in6_addr *a1, const struct in6_addr *a2)
|
||||
|
||||
/*
|
||||
* Compare two source/destination address pairs.
|
||||
* RFC 3484, section 6.
|
||||
* RFC 6724, section 6.
|
||||
*/
|
||||
|
||||
/*ARGSUSED*/
|
||||
static int
|
||||
_rfc3484_compare(const void *ptr1, const void* ptr2)
|
||||
_rfc6724_compare(const void *ptr1, const void* ptr2)
|
||||
{
|
||||
const struct addrinfo_sort_elem *a1 = (const struct addrinfo_sort_elem *)ptr1;
|
||||
const struct addrinfo_sort_elem *a2 = (const struct addrinfo_sort_elem *)ptr2;
|
||||
@@ -1740,7 +1731,7 @@ _rfc3484_compare(const void *ptr1, const void* ptr2)
|
||||
|
||||
/*
|
||||
* Rule 9: Use longest matching prefix.
|
||||
* We implement this for IPv6 only, as the rules in RFC 3484 don't seem
|
||||
* We implement this for IPv6 only, as the rules in RFC 6724 don't seem
|
||||
* to work very well directly applied to IPv4. (glibc uses information from
|
||||
* the routing table for a custom IPv4 implementation here.)
|
||||
*/
|
||||
@@ -1820,13 +1811,13 @@ _find_src_addr(const struct sockaddr *addr, struct sockaddr *src_addr)
|
||||
}
|
||||
|
||||
/*
|
||||
* Sort the linked list starting at sentinel->ai_next in RFC3484 order.
|
||||
* Sort the linked list starting at sentinel->ai_next in RFC6724 order.
|
||||
* Will leave the list unchanged if an error occurs.
|
||||
*/
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void
|
||||
_rfc3484_sort(struct addrinfo *list_sentinel)
|
||||
_rfc6724_sort(struct addrinfo *list_sentinel)
|
||||
{
|
||||
struct addrinfo *cur;
|
||||
int nelem = 0, i;
|
||||
@@ -1861,7 +1852,7 @@ _rfc3484_sort(struct addrinfo *list_sentinel)
|
||||
}
|
||||
|
||||
/* Sort the addresses, and rearrange the linked list so it matches the sorted order. */
|
||||
qsort((void *)elems, nelem, sizeof(struct addrinfo_sort_elem), _rfc3484_compare);
|
||||
qsort((void *)elems, nelem, sizeof(struct addrinfo_sort_elem), _rfc6724_compare);
|
||||
|
||||
list_sentinel->ai_next = elems[0].ai;
|
||||
for (i = 0; i < nelem - 1; ++i) {
|
||||
@@ -1897,9 +1888,11 @@ _dns_getaddrinfo(void *rv, void *cb_data, va_list ap)
|
||||
struct addrinfo sentinel, *cur;
|
||||
struct res_target q, q2;
|
||||
res_state res;
|
||||
const char* iface;
|
||||
|
||||
name = va_arg(ap, char *);
|
||||
pai = va_arg(ap, const struct addrinfo *);
|
||||
iface = va_arg(ap, char *);
|
||||
//fprintf(stderr, "_dns_getaddrinfo() name = '%s'\n", name);
|
||||
|
||||
memset(&q, 0, sizeof(q));
|
||||
@@ -1981,6 +1974,12 @@ _dns_getaddrinfo(void *rv, void *cb_data, va_list ap)
|
||||
return NS_NOTFOUND;
|
||||
}
|
||||
|
||||
/* this just sets our iface val in the thread private data so we don't have to
|
||||
* modify the api's all the way down to res_send.c's res_nsend. We could
|
||||
* fully populate the thread private data here, but if we get down there
|
||||
* and have a cache hit that would be wasted, so we do the rest there on miss
|
||||
*/
|
||||
res_setiface(res, iface);
|
||||
if (res_searchN(name, &q, res) < 0) {
|
||||
__res_put_state(res);
|
||||
free(buf);
|
||||
@@ -2012,7 +2011,7 @@ _dns_getaddrinfo(void *rv, void *cb_data, va_list ap)
|
||||
}
|
||||
}
|
||||
|
||||
_rfc3484_sort(&sentinel);
|
||||
_rfc6724_sort(&sentinel);
|
||||
|
||||
__res_put_state(res);
|
||||
|
||||
|
@@ -61,7 +61,6 @@ __RCSID("$NetBSD: getnameinfo.c,v 1.53 2012/09/26 23:13:00 christos Exp $");
|
||||
#include <assert.h>
|
||||
#include <limits.h>
|
||||
#include <netdb.h>
|
||||
#ifdef ANDROID_CHANGES
|
||||
#include "arpa_nameser.h"
|
||||
#include "resolv_private.h"
|
||||
#include <sys/system_properties.h>
|
||||
@@ -69,9 +68,6 @@ __RCSID("$NetBSD: getnameinfo.c,v 1.53 2012/09/26 23:13:00 christos Exp $");
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#define MIN(x,y) ((x) < (y) ? (x) : (y))
|
||||
#else
|
||||
#include <resolv.h>
|
||||
#endif
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -97,7 +93,7 @@ struct sockinet {
|
||||
};
|
||||
|
||||
static int getnameinfo_inet(const struct sockaddr *, socklen_t, char *,
|
||||
socklen_t, char *, socklen_t, int);
|
||||
socklen_t, char *, socklen_t, int, const char*);
|
||||
#ifdef INET6
|
||||
static int ip6_parsenumeric(const struct sockaddr *, const char *, char *,
|
||||
socklen_t, int);
|
||||
@@ -111,12 +107,17 @@ static int getnameinfo_local(const struct sockaddr *, socklen_t, char *,
|
||||
* appropriate function to call.
|
||||
*/
|
||||
int getnameinfo(const struct sockaddr* sa, socklen_t salen, char* host, size_t hostlen, char* serv, size_t servlen, int flags)
|
||||
{
|
||||
return android_getnameinfoforiface(sa, salen, host, hostlen, serv, servlen, flags, NULL);
|
||||
}
|
||||
|
||||
int android_getnameinfoforiface(const struct sockaddr* sa, socklen_t salen, char* host, size_t hostlen, char* serv, size_t servlen, int flags, const char* iface)
|
||||
{
|
||||
switch (sa->sa_family) {
|
||||
case AF_INET:
|
||||
case AF_INET6:
|
||||
return getnameinfo_inet(sa, salen, host, hostlen,
|
||||
serv, servlen, flags);
|
||||
serv, servlen, flags, iface);
|
||||
case AF_LOCAL:
|
||||
return getnameinfo_local(sa, salen, host, hostlen,
|
||||
serv, servlen, flags);
|
||||
@@ -152,112 +153,23 @@ getnameinfo_local(const struct sockaddr *sa, socklen_t salen,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef ANDROID_CHANGES
|
||||
/* On success length of the host name is returned. A return
|
||||
* value of 0 means there's no host name associated with
|
||||
* the address. On failure -1 is returned in which case
|
||||
* normal execution flow shall continue. */
|
||||
static int
|
||||
android_gethostbyaddr_proxy(char* nameBuf, size_t nameBufLen, const void *addr, socklen_t addrLen, int addrFamily) {
|
||||
android_gethostbyaddr_proxy(char* nameBuf, size_t nameBufLen, const void *addr, socklen_t addrLen, int addrFamily, const char* iface)
|
||||
{
|
||||
struct hostent *hostResult =
|
||||
android_gethostbyaddrforiface_proxy(addr, addrLen, addrFamily, iface);
|
||||
|
||||
int sock;
|
||||
const int one = 1;
|
||||
struct sockaddr_un proxy_addr;
|
||||
const char* cache_mode = getenv("ANDROID_DNS_MODE");
|
||||
FILE* proxy = NULL;
|
||||
int result = -1;
|
||||
if (hostResult == NULL) return 0;
|
||||
|
||||
if (cache_mode != NULL && strcmp(cache_mode, "local") == 0) {
|
||||
// Don't use the proxy in local mode. This is used by the
|
||||
// proxy itself.
|
||||
return -1;
|
||||
}
|
||||
int lengthResult = strlen(hostResult->h_name);
|
||||
|
||||
// Temporary cautious hack to disable the DNS proxy for processes
|
||||
// requesting special treatment. Ideally the DNS proxy should
|
||||
// accomodate these apps, though.
|
||||
char propname[PROP_NAME_MAX];
|
||||
char propvalue[PROP_VALUE_MAX];
|
||||
snprintf(propname, sizeof(propname), "net.dns1.%d", getpid());
|
||||
if (__system_property_get(propname, propvalue) > 0) {
|
||||
return -1;
|
||||
}
|
||||
// create socket
|
||||
sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (sock < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
|
||||
memset(&proxy_addr, 0, sizeof(proxy_addr));
|
||||
proxy_addr.sun_family = AF_UNIX;
|
||||
strlcpy(proxy_addr.sun_path, "/dev/socket/dnsproxyd",
|
||||
sizeof(proxy_addr.sun_path));
|
||||
if (TEMP_FAILURE_RETRY(connect(sock, (const struct sockaddr*) (void*) &proxy_addr,
|
||||
sizeof(proxy_addr))) != 0) {
|
||||
close(sock);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// send request to DnsProxyListener
|
||||
proxy = fdopen(sock,"r+");
|
||||
if (proxy == NULL) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
char buf[INET6_ADDRSTRLEN]; // big enough for IPv4 and IPv6
|
||||
const char* addrStr = inet_ntop(addrFamily, addr, buf, sizeof(buf));
|
||||
if (addrStr == NULL) {
|
||||
goto exit;
|
||||
}
|
||||
if (fprintf(proxy, "gethostbyaddr %s %d %d", addrStr, addrLen, addrFamily) < 0) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
// literal NULL byte at end, required by FrameworkListener
|
||||
if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
result = 0;
|
||||
char msg_buf[4];
|
||||
// read result code for gethostbyaddr
|
||||
if (fread(msg_buf, 1, sizeof(msg_buf), proxy) != sizeof(msg_buf)) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
int result_code = (int)strtol(msg_buf, NULL, 10);
|
||||
// verify the code itself
|
||||
// This should be synchronized to ResponseCode.h
|
||||
static const int DnsProxyQueryResult = 222;
|
||||
if (result_code != DnsProxyQueryResult) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
uint32_t name_len;
|
||||
if (fread(&name_len, sizeof(name_len), 1, proxy) != 1) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
name_len = ntohl(name_len);
|
||||
if (name_len <= 0 || name_len >= nameBufLen) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (fread(nameBuf, name_len, 1, proxy) != 1) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
result = name_len;
|
||||
|
||||
exit:
|
||||
if (proxy != NULL) {
|
||||
fclose(proxy);
|
||||
}
|
||||
|
||||
return result;
|
||||
if (nameBuf) strncpy(nameBuf, hostResult->h_name, nameBufLen);
|
||||
return lengthResult;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* getnameinfo_inet():
|
||||
@@ -267,7 +179,7 @@ static int
|
||||
getnameinfo_inet(const struct sockaddr* sa, socklen_t salen,
|
||||
char *host, socklen_t hostlen,
|
||||
char *serv, socklen_t servlen,
|
||||
int flags)
|
||||
int flags, const char* iface)
|
||||
{
|
||||
const struct afd *afd;
|
||||
struct servent *sp;
|
||||
@@ -405,23 +317,19 @@ getnameinfo_inet(const struct sockaddr* sa, socklen_t salen,
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
#ifdef ANDROID_CHANGES
|
||||
struct hostent android_proxy_hostent;
|
||||
char android_proxy_buf[MAXDNAME];
|
||||
|
||||
int hostnamelen = android_gethostbyaddr_proxy(android_proxy_buf,
|
||||
MAXDNAME, addr, afd->a_addrlen, afd->a_af);
|
||||
MAXDNAME, addr, afd->a_addrlen, afd->a_af, iface);
|
||||
if (hostnamelen > 0) {
|
||||
hp = &android_proxy_hostent;
|
||||
hp->h_name = android_proxy_buf;
|
||||
} else if (!hostnamelen) {
|
||||
hp = NULL;
|
||||
} else {
|
||||
hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af);
|
||||
hp = android_gethostbyaddrforiface(addr, afd->a_addrlen, afd->a_af, iface);
|
||||
}
|
||||
#else
|
||||
hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af);
|
||||
#endif
|
||||
|
||||
if (hp) {
|
||||
#if 0
|
||||
|
@@ -43,6 +43,7 @@
|
||||
#include <arpa/inet.h>
|
||||
#include "resolv_private.h"
|
||||
#include "resolv_iface.h"
|
||||
#include "res_private.h"
|
||||
|
||||
/* This code implements a small and *simple* DNS resolver cache.
|
||||
*
|
||||
@@ -571,8 +572,6 @@ _dnsPacket_checkQName( DnsPacket* packet )
|
||||
static int
|
||||
_dnsPacket_checkQR( DnsPacket* packet )
|
||||
{
|
||||
int len;
|
||||
|
||||
if (!_dnsPacket_checkQName(packet))
|
||||
return 0;
|
||||
|
||||
@@ -831,8 +830,6 @@ _dnsPacket_hashQName( DnsPacket* packet, unsigned hash )
|
||||
static unsigned
|
||||
_dnsPacket_hashQR( DnsPacket* packet, unsigned hash )
|
||||
{
|
||||
int len;
|
||||
|
||||
hash = _dnsPacket_hashQName(packet, hash);
|
||||
hash = _dnsPacket_hashBytes(packet, 4, hash); /* TYPE and CLASS */
|
||||
return hash;
|
||||
@@ -1019,8 +1016,58 @@ typedef struct Entry {
|
||||
} Entry;
|
||||
|
||||
/**
|
||||
* Parse the answer records and find the smallest
|
||||
* TTL among the answer records.
|
||||
* Find the TTL for a negative DNS result. This is defined as the minimum
|
||||
* of the SOA records TTL and the MINIMUM-TTL field (RFC-2308).
|
||||
*
|
||||
* Return 0 if not found.
|
||||
*/
|
||||
static u_long
|
||||
answer_getNegativeTTL(ns_msg handle) {
|
||||
int n, nscount;
|
||||
u_long result = 0;
|
||||
ns_rr rr;
|
||||
|
||||
nscount = ns_msg_count(handle, ns_s_ns);
|
||||
for (n = 0; n < nscount; n++) {
|
||||
if ((ns_parserr(&handle, ns_s_ns, n, &rr) == 0) && (ns_rr_type(rr) == ns_t_soa)) {
|
||||
const u_char *rdata = ns_rr_rdata(rr); // find the data
|
||||
const u_char *edata = rdata + ns_rr_rdlen(rr); // add the len to find the end
|
||||
int len;
|
||||
u_long ttl, rec_result = ns_rr_ttl(rr);
|
||||
|
||||
// find the MINIMUM-TTL field from the blob of binary data for this record
|
||||
// skip the server name
|
||||
len = dn_skipname(rdata, edata);
|
||||
if (len == -1) continue; // error skipping
|
||||
rdata += len;
|
||||
|
||||
// skip the admin name
|
||||
len = dn_skipname(rdata, edata);
|
||||
if (len == -1) continue; // error skipping
|
||||
rdata += len;
|
||||
|
||||
if (edata - rdata != 5*NS_INT32SZ) continue;
|
||||
// skip: serial number + refresh interval + retry interval + expiry
|
||||
rdata += NS_INT32SZ * 4;
|
||||
// finally read the MINIMUM TTL
|
||||
ttl = ns_get32(rdata);
|
||||
if (ttl < rec_result) {
|
||||
rec_result = ttl;
|
||||
}
|
||||
// Now that the record is read successfully, apply the new min TTL
|
||||
if (n == 0 || rec_result < result) {
|
||||
result = rec_result;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the answer records and find the appropriate
|
||||
* smallest TTL among the records. This might be from
|
||||
* the answer records if found or from the SOA record
|
||||
* if it's a negative result.
|
||||
*
|
||||
* The returned TTL is the number of seconds to
|
||||
* keep the answer in the cache.
|
||||
@@ -1040,14 +1087,20 @@ answer_getTTL(const void* answer, int answerlen)
|
||||
if (ns_initparse(answer, answerlen, &handle) >= 0) {
|
||||
// get number of answer records
|
||||
ancount = ns_msg_count(handle, ns_s_an);
|
||||
for (n = 0; n < ancount; n++) {
|
||||
if (ns_parserr(&handle, ns_s_an, n, &rr) == 0) {
|
||||
ttl = ns_rr_ttl(rr);
|
||||
if (n == 0 || ttl < result) {
|
||||
result = ttl;
|
||||
|
||||
if (ancount == 0) {
|
||||
// a response with no answers? Cache this negative result.
|
||||
result = answer_getNegativeTTL(handle);
|
||||
} else {
|
||||
for (n = 0; n < ancount; n++) {
|
||||
if (ns_parserr(&handle, ns_s_an, n, &rr) == 0) {
|
||||
ttl = ns_rr_ttl(rr);
|
||||
if (n == 0 || ttl < result) {
|
||||
result = ttl;
|
||||
}
|
||||
} else {
|
||||
XLOG("ns_parserr failed ancount no = %d. errno = %s\n", n, strerror(errno));
|
||||
}
|
||||
} else {
|
||||
XLOG("ns_parserr failed ancount no = %d. errno = %s\n", n, strerror(errno));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1196,8 +1249,16 @@ typedef struct resolv_cache_info {
|
||||
struct resolv_cache_info* next;
|
||||
char* nameservers[MAXNS +1];
|
||||
struct addrinfo* nsaddrinfo[MAXNS + 1];
|
||||
char defdname[256];
|
||||
int dnsrch_offset[MAXDNSRCH+1]; // offsets into defdname
|
||||
} CacheInfo;
|
||||
|
||||
typedef struct resolv_pidiface_info {
|
||||
int pid;
|
||||
char ifname[IF_NAMESIZE + 1];
|
||||
struct resolv_pidiface_info* next;
|
||||
} PidIfaceInfo;
|
||||
|
||||
#define HTABLE_VALID(x) ((x) != NULL && (x) != HTABLE_DELETED)
|
||||
|
||||
static void
|
||||
@@ -1250,8 +1311,9 @@ _cache_check_pending_request_locked( struct resolv_cache* cache, Entry* key )
|
||||
}
|
||||
} else {
|
||||
struct timespec ts = {0,0};
|
||||
XLOG("Waiting for previous request");
|
||||
ts.tv_sec = _time_now() + PENDING_REQUEST_TIMEOUT;
|
||||
int rv = pthread_cond_timedwait(&ri->cond, &cache->lock, &ts);
|
||||
pthread_cond_timedwait(&ri->cond, &cache->lock, &ts);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1305,7 +1367,6 @@ static void
|
||||
_cache_flush_locked( Cache* cache )
|
||||
{
|
||||
int nn;
|
||||
time_t now = _time_now();
|
||||
|
||||
for (nn = 0; nn < cache->max_entries; nn++)
|
||||
{
|
||||
@@ -1346,9 +1407,8 @@ _res_cache_get_max_entries( void )
|
||||
if (cache_mode == NULL || strcmp(cache_mode, "local") != 0) {
|
||||
// Don't use the cache in local mode. This is used by the
|
||||
// proxy itself.
|
||||
// TODO - change this to 0 when all dns stuff uses proxy (5918973)
|
||||
XLOG("setup cache for non-cache process. size=1");
|
||||
return 1;
|
||||
XLOG("setup cache for non-cache process. size=0, %s", cache_mode);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (__system_property_get(DNS_CACHE_SIZE_PROP_NAME, cache_size) > 0) {
|
||||
@@ -1441,6 +1501,7 @@ _dump_answer(const void* answer, int answerlen)
|
||||
remove("/data/reslog.txt");
|
||||
}
|
||||
else {
|
||||
errno = 0; // else debug is introducing error signals
|
||||
XLOG("_dump_answer: can't open file\n");
|
||||
}
|
||||
}
|
||||
@@ -1576,9 +1637,7 @@ _resolv_cache_lookup( struct resolv_cache* cache,
|
||||
int answersize,
|
||||
int *answerlen )
|
||||
{
|
||||
DnsPacket pack[1];
|
||||
Entry key[1];
|
||||
int index;
|
||||
Entry** lookup;
|
||||
Entry* e;
|
||||
time_t now;
|
||||
@@ -1729,20 +1788,28 @@ Exit:
|
||||
/****************************************************************************/
|
||||
/****************************************************************************/
|
||||
|
||||
static pthread_once_t _res_cache_once;
|
||||
static pthread_once_t _res_cache_once = PTHREAD_ONCE_INIT;
|
||||
|
||||
// Head of the list of caches. Protected by _res_cache_list_lock.
|
||||
static struct resolv_cache_info _res_cache_list;
|
||||
|
||||
// List of pid iface pairs
|
||||
static struct resolv_pidiface_info _res_pidiface_list;
|
||||
|
||||
// name of the current default inteface
|
||||
static char _res_default_ifname[IF_NAMESIZE + 1];
|
||||
|
||||
// lock protecting everything in the _resolve_cache_info structs (next ptr, etc)
|
||||
static pthread_mutex_t _res_cache_list_lock;
|
||||
|
||||
// lock protecting the _res_pid_iface_list
|
||||
static pthread_mutex_t _res_pidiface_list_lock;
|
||||
|
||||
/* lookup the default interface name */
|
||||
static char *_get_default_iface_locked();
|
||||
/* find the first cache that has an associated interface and return the name of the interface */
|
||||
static char* _find_any_iface_name_locked( void );
|
||||
|
||||
/* insert resolv_cache_info into the list of resolv_cache_infos */
|
||||
static void _insert_cache_info_locked(struct resolv_cache_info* cache_info);
|
||||
/* creates a resolv_cache_info */
|
||||
@@ -1751,8 +1818,6 @@ static struct resolv_cache_info* _create_cache_info( void );
|
||||
static struct resolv_cache* _find_named_cache_locked(const char* ifname);
|
||||
/* gets a resolv_cache_info associated with an interface name, or NULL if not found */
|
||||
static struct resolv_cache_info* _find_cache_info_locked(const char* ifname);
|
||||
/* free dns name server list of a resolv_cache_info structure */
|
||||
static void _free_nameservers(struct resolv_cache_info* cache_info);
|
||||
/* look up the named cache, and creates one if needed */
|
||||
static struct resolv_cache* _get_res_cache_for_iface_locked(const char* ifname);
|
||||
/* empty the named cache */
|
||||
@@ -1765,8 +1830,14 @@ static int _get_nameserver_locked(const char* ifname, int n, char* addr, int add
|
||||
static struct addrinfo* _get_nameserver_addr_locked(const char* ifname, int n);
|
||||
/* lookup the inteface's address */
|
||||
static struct in_addr* _get_addr_locked(const char * ifname);
|
||||
|
||||
|
||||
/* return 1 if the provided list of name servers differs from the list of name servers
|
||||
* currently attached to the provided cache_info */
|
||||
static int _resolv_is_nameservers_equal_locked(struct resolv_cache_info* cache_info,
|
||||
char** servers, int numservers);
|
||||
/* remove a resolv_pidiface_info structure from _res_pidiface_list */
|
||||
static void _remove_pidiface_info_locked(int pid);
|
||||
/* get a resolv_pidiface_info structure from _res_pidiface_list with a certain pid */
|
||||
static struct resolv_pidiface_info* _get_pid_iface_info_locked(int pid);
|
||||
|
||||
static void
|
||||
_res_cache_init(void)
|
||||
@@ -1780,37 +1851,36 @@ _res_cache_init(void)
|
||||
|
||||
memset(&_res_default_ifname, 0, sizeof(_res_default_ifname));
|
||||
memset(&_res_cache_list, 0, sizeof(_res_cache_list));
|
||||
memset(&_res_pidiface_list, 0, sizeof(_res_pidiface_list));
|
||||
pthread_mutex_init(&_res_cache_list_lock, NULL);
|
||||
pthread_mutex_init(&_res_pidiface_list_lock, NULL);
|
||||
}
|
||||
|
||||
struct resolv_cache*
|
||||
__get_res_cache(void)
|
||||
__get_res_cache(const char* ifname)
|
||||
{
|
||||
struct resolv_cache *cache;
|
||||
|
||||
pthread_once(&_res_cache_once, _res_cache_init);
|
||||
|
||||
pthread_mutex_lock(&_res_cache_list_lock);
|
||||
|
||||
char* ifname = _get_default_iface_locked();
|
||||
|
||||
// if default interface not set then use the first cache
|
||||
// associated with an interface as the default one.
|
||||
if (ifname[0] == '\0') {
|
||||
struct resolv_cache_info* cache_info = _res_cache_list.next;
|
||||
while (cache_info) {
|
||||
if (cache_info->ifname[0] != '\0') {
|
||||
ifname = cache_info->ifname;
|
||||
break;
|
||||
char* iface;
|
||||
if (ifname == NULL || ifname[0] == '\0') {
|
||||
iface = _get_default_iface_locked();
|
||||
if (iface[0] == '\0') {
|
||||
char* tmp = _find_any_iface_name_locked();
|
||||
if (tmp) {
|
||||
iface = tmp;
|
||||
}
|
||||
|
||||
cache_info = cache_info->next;
|
||||
}
|
||||
} else {
|
||||
iface = (char *) ifname;
|
||||
}
|
||||
cache = _get_res_cache_for_iface_locked(ifname);
|
||||
|
||||
cache = _get_res_cache_for_iface_locked(iface);
|
||||
|
||||
pthread_mutex_unlock(&_res_cache_list_lock);
|
||||
XLOG("_get_res_cache. default_ifname = %s\n", ifname);
|
||||
XLOG("_get_res_cache: iface = %s, cache=%p\n", iface, cache);
|
||||
return cache;
|
||||
}
|
||||
|
||||
@@ -1966,11 +2036,29 @@ _find_cache_info_locked(const char* ifname)
|
||||
static char*
|
||||
_get_default_iface_locked(void)
|
||||
{
|
||||
|
||||
char* iface = _res_default_ifname;
|
||||
|
||||
return iface;
|
||||
}
|
||||
|
||||
static char*
|
||||
_find_any_iface_name_locked( void ) {
|
||||
char* ifname = NULL;
|
||||
|
||||
struct resolv_cache_info* cache_info = _res_cache_list.next;
|
||||
while (cache_info) {
|
||||
if (cache_info->ifname[0] != '\0') {
|
||||
ifname = cache_info->ifname;
|
||||
break;
|
||||
}
|
||||
|
||||
cache_info = cache_info->next;
|
||||
}
|
||||
|
||||
return ifname;
|
||||
}
|
||||
|
||||
void
|
||||
_resolv_set_default_iface(const char* ifname)
|
||||
{
|
||||
@@ -1988,21 +2076,25 @@ _resolv_set_default_iface(const char* ifname)
|
||||
}
|
||||
|
||||
void
|
||||
_resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numservers)
|
||||
_resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numservers,
|
||||
const char *domains)
|
||||
{
|
||||
int i, rt, index;
|
||||
struct addrinfo hints;
|
||||
char sbuf[NI_MAXSERV];
|
||||
register char *cp;
|
||||
int *offset;
|
||||
|
||||
pthread_once(&_res_cache_once, _res_cache_init);
|
||||
|
||||
pthread_mutex_lock(&_res_cache_list_lock);
|
||||
|
||||
// creates the cache if not created
|
||||
_get_res_cache_for_iface_locked(ifname);
|
||||
|
||||
struct resolv_cache_info* cache_info = _find_cache_info_locked(ifname);
|
||||
|
||||
if (cache_info != NULL) {
|
||||
if (cache_info != NULL &&
|
||||
!_resolv_is_nameservers_equal_locked(cache_info, servers, numservers)) {
|
||||
// free current before adding new
|
||||
_free_nameservers_locked(cache_info);
|
||||
|
||||
@@ -2018,14 +2110,68 @@ _resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numser
|
||||
if (rt == 0) {
|
||||
cache_info->nameservers[index] = strdup(servers[i]);
|
||||
index++;
|
||||
XLOG("_resolv_set_nameservers_for_iface: iface = %s, addr = %s\n",
|
||||
ifname, servers[i]);
|
||||
} else {
|
||||
cache_info->nsaddrinfo[index] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// code moved from res_init.c, load_domain_search_list
|
||||
strlcpy(cache_info->defdname, domains, sizeof(cache_info->defdname));
|
||||
if ((cp = strchr(cache_info->defdname, '\n')) != NULL)
|
||||
*cp = '\0';
|
||||
cp = cache_info->defdname;
|
||||
offset = cache_info->dnsrch_offset;
|
||||
while (offset < cache_info->dnsrch_offset + MAXDNSRCH) {
|
||||
while (*cp == ' ' || *cp == '\t') /* skip leading white space */
|
||||
cp++;
|
||||
if (*cp == '\0') /* stop if nothing more to do */
|
||||
break;
|
||||
*offset++ = cp - cache_info->defdname; /* record this search domain */
|
||||
while (*cp) { /* zero-terminate it */
|
||||
if (*cp == ' '|| *cp == '\t') {
|
||||
*cp++ = '\0';
|
||||
break;
|
||||
}
|
||||
cp++;
|
||||
}
|
||||
}
|
||||
*offset = -1; /* cache_info->dnsrch_offset has MAXDNSRCH+1 items */
|
||||
|
||||
// flush cache since new settings
|
||||
_flush_cache_for_iface_locked(ifname);
|
||||
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&_res_cache_list_lock);
|
||||
}
|
||||
|
||||
static int
|
||||
_resolv_is_nameservers_equal_locked(struct resolv_cache_info* cache_info,
|
||||
char** servers, int numservers)
|
||||
{
|
||||
int i;
|
||||
char** ns;
|
||||
int equal = 1;
|
||||
|
||||
// compare each name server against current name servers
|
||||
if (numservers > MAXNS) numservers = MAXNS;
|
||||
for (i = 0; i < numservers && equal; i++) {
|
||||
ns = cache_info->nameservers;
|
||||
equal = 0;
|
||||
while(*ns) {
|
||||
if (strcmp(*ns, servers[i]) == 0) {
|
||||
equal = 1;
|
||||
break;
|
||||
}
|
||||
ns++;
|
||||
}
|
||||
}
|
||||
|
||||
return equal;
|
||||
}
|
||||
|
||||
static void
|
||||
_free_nameservers_locked(struct resolv_cache_info* cache_info)
|
||||
{
|
||||
@@ -2168,3 +2314,196 @@ _get_addr_locked(const char * ifname)
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_remove_pidiface_info_locked(int pid) {
|
||||
struct resolv_pidiface_info* result = &_res_pidiface_list;
|
||||
struct resolv_pidiface_info* prev = NULL;
|
||||
|
||||
while (result != NULL && result->pid != pid) {
|
||||
prev = result;
|
||||
result = result->next;
|
||||
}
|
||||
if (prev != NULL && result != NULL) {
|
||||
prev->next = result->next;
|
||||
free(result);
|
||||
}
|
||||
}
|
||||
|
||||
static struct resolv_pidiface_info*
|
||||
_get_pid_iface_info_locked(int pid)
|
||||
{
|
||||
struct resolv_pidiface_info* result = &_res_pidiface_list;
|
||||
while (result != NULL && result->pid != pid) {
|
||||
result = result->next;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
_resolv_set_iface_for_pid(const char* ifname, int pid)
|
||||
{
|
||||
// make sure the pid iface list is created
|
||||
pthread_once(&_res_cache_once, _res_cache_init);
|
||||
pthread_mutex_lock(&_res_pidiface_list_lock);
|
||||
|
||||
struct resolv_pidiface_info* pidiface_info = _get_pid_iface_info_locked(pid);
|
||||
if (!pidiface_info) {
|
||||
pidiface_info = calloc(sizeof(*pidiface_info), 1);
|
||||
if (pidiface_info) {
|
||||
pidiface_info->pid = pid;
|
||||
int len = sizeof(pidiface_info->ifname);
|
||||
strncpy(pidiface_info->ifname, ifname, len - 1);
|
||||
pidiface_info->ifname[len - 1] = '\0';
|
||||
|
||||
pidiface_info->next = _res_pidiface_list.next;
|
||||
_res_pidiface_list.next = pidiface_info;
|
||||
|
||||
XLOG("_resolv_set_iface_for_pid: pid %d , iface %s\n", pid, ifname);
|
||||
} else {
|
||||
XLOG("_resolv_set_iface_for_pid failing calloc");
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&_res_pidiface_list_lock);
|
||||
}
|
||||
|
||||
void
|
||||
_resolv_clear_iface_for_pid(int pid)
|
||||
{
|
||||
pthread_once(&_res_cache_once, _res_cache_init);
|
||||
pthread_mutex_lock(&_res_pidiface_list_lock);
|
||||
|
||||
_remove_pidiface_info_locked(pid);
|
||||
|
||||
XLOG("_resolv_clear_iface_for_pid: pid %d\n", pid);
|
||||
|
||||
pthread_mutex_unlock(&_res_pidiface_list_lock);
|
||||
}
|
||||
|
||||
int
|
||||
_resolv_get_pids_associated_interface(int pid, char* buff, int buffLen)
|
||||
{
|
||||
int len = 0;
|
||||
|
||||
if (!buff) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
pthread_once(&_res_cache_once, _res_cache_init);
|
||||
pthread_mutex_lock(&_res_pidiface_list_lock);
|
||||
|
||||
struct resolv_pidiface_info* pidiface_info = _get_pid_iface_info_locked(pid);
|
||||
buff[0] = '\0';
|
||||
if (pidiface_info) {
|
||||
len = strlen(pidiface_info->ifname);
|
||||
if (len < buffLen) {
|
||||
strncpy(buff, pidiface_info->ifname, len);
|
||||
buff[len] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
XLOG("_resolv_get_pids_associated_interface buff: %s\n", buff);
|
||||
|
||||
pthread_mutex_unlock(&_res_pidiface_list_lock);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
int
|
||||
_resolv_get_default_iface(char* buff, int buffLen)
|
||||
{
|
||||
char* ifname;
|
||||
int len = 0;
|
||||
|
||||
if (!buff || buffLen == 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
pthread_once(&_res_cache_once, _res_cache_init);
|
||||
pthread_mutex_lock(&_res_cache_list_lock);
|
||||
|
||||
ifname = _get_default_iface_locked(); // never null, but may be empty
|
||||
|
||||
// if default interface not set. Get first cache with an interface
|
||||
if (ifname[0] == '\0') {
|
||||
ifname = _find_any_iface_name_locked(); // may be null
|
||||
}
|
||||
|
||||
// if we got the default iface or if (no-default) the find_any call gave an answer
|
||||
if (ifname) {
|
||||
len = strlen(ifname);
|
||||
if (len < buffLen) {
|
||||
strncpy(buff, ifname, len);
|
||||
buff[len] = '\0';
|
||||
}
|
||||
} else {
|
||||
buff[0] = '\0';
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&_res_cache_list_lock);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
int
|
||||
_resolv_populate_res_for_iface(res_state statp)
|
||||
{
|
||||
int nserv;
|
||||
struct resolv_cache_info* info = NULL;
|
||||
|
||||
if (statp) {
|
||||
struct addrinfo* ai;
|
||||
|
||||
if (statp->iface[0] == '\0') { // no interface set assign default
|
||||
_resolv_get_default_iface(statp->iface, sizeof(statp->iface));
|
||||
}
|
||||
|
||||
pthread_once(&_res_cache_once, _res_cache_init);
|
||||
pthread_mutex_lock(&_res_cache_list_lock);
|
||||
info = _find_cache_info_locked(statp->iface);
|
||||
|
||||
if (info == NULL) {
|
||||
pthread_mutex_unlock(&_res_cache_list_lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
XLOG("_resolv_populate_res_for_iface: %s\n", statp->iface);
|
||||
for (nserv = 0; nserv < MAXNS; nserv++) {
|
||||
ai = info->nsaddrinfo[nserv];
|
||||
if (ai == NULL) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ((size_t) ai->ai_addrlen <= sizeof(statp->_u._ext.ext->nsaddrs[0])) {
|
||||
if (statp->_u._ext.ext != NULL) {
|
||||
memcpy(&statp->_u._ext.ext->nsaddrs[nserv], ai->ai_addr, ai->ai_addrlen);
|
||||
statp->nsaddr_list[nserv].sin_family = AF_UNSPEC;
|
||||
} else {
|
||||
if ((size_t) ai->ai_addrlen
|
||||
<= sizeof(statp->nsaddr_list[0])) {
|
||||
memcpy(&statp->nsaddr_list[nserv], ai->ai_addr,
|
||||
ai->ai_addrlen);
|
||||
} else {
|
||||
statp->nsaddr_list[nserv].sin_family = AF_UNSPEC;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
XLOG("_resolv_populate_res_for_iface found too long addrlen");
|
||||
}
|
||||
}
|
||||
statp->nscount = nserv;
|
||||
// now do search domains. Note that we cache the offsets as this code runs alot
|
||||
// but the setting/offset-computer only runs when set/changed
|
||||
strlcpy(statp->defdname, info->defdname, sizeof(statp->defdname));
|
||||
register char **pp = statp->dnsrch;
|
||||
register int *p = info->dnsrch_offset;
|
||||
while (pp < statp->dnsrch + MAXDNSRCH && *p != -1) {
|
||||
*pp++ = &statp->defdname + *p++;
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&_res_cache_list_lock);
|
||||
}
|
||||
return nserv;
|
||||
}
|
||||
|
@@ -82,13 +82,7 @@ extern struct __res_state _nres;
|
||||
|
||||
int res_ourserver_p(const res_state, const struct sockaddr *);
|
||||
|
||||
#ifdef ANDROID_CHANGES
|
||||
static int res_need_init() {
|
||||
return ((_nres.options & RES_INIT) == 0U) || res_get_dns_changed();
|
||||
}
|
||||
#else
|
||||
#define res_need_init() ((_nres.options & RES_INIT) == 0U)
|
||||
#endif
|
||||
|
||||
int
|
||||
res_init(void) {
|
||||
|
@@ -111,13 +111,6 @@ __RCSID("$NetBSD: res_init.c,v 1.8 2006/03/19 03:10:08 christos Exp $");
|
||||
/* ensure that sockaddr_in6 and IN6ADDR_ANY_INIT are declared / defined */
|
||||
#ifdef ANDROID_CHANGES
|
||||
#include "resolv_private.h"
|
||||
#define MAX_DNS_PROPERTIES 8
|
||||
#define DNS_PROP_NAME_PREFIX "net.dns"
|
||||
#define DNS_CHANGE_PROP_NAME "net.dnschange"
|
||||
#define DNS_SEARCH_PROP_NAME "net.dns.search"
|
||||
static const prop_info *dns_change_prop;
|
||||
static int dns_last_change_counter;
|
||||
static int _get_dns_change_count();
|
||||
#else
|
||||
#include <resolv.h>
|
||||
#endif
|
||||
@@ -171,41 +164,6 @@ res_ninit(res_state statp) {
|
||||
return (__res_vinit(statp, 0));
|
||||
}
|
||||
|
||||
#ifdef ANDROID_CHANGES
|
||||
static int load_domain_search_list(res_state statp) {
|
||||
char propvalue[PROP_VALUE_MAX];
|
||||
register char *cp, **pp;
|
||||
|
||||
if(__system_property_get(DNS_SEARCH_PROP_NAME, propvalue) >= 1) {
|
||||
strlcpy(statp->defdname, propvalue, sizeof(statp->defdname));
|
||||
if ((cp = strchr(statp->defdname, '\n')) != NULL)
|
||||
*cp = '\0';
|
||||
cp = statp->defdname;
|
||||
pp = statp->dnsrch;
|
||||
while ( pp < statp->dnsrch + MAXDNSRCH ) {
|
||||
while (*cp == ' ' || *cp == '\t') /* skip leading white space */
|
||||
cp++;
|
||||
if (*cp == '\0') /* stop if nothing more */
|
||||
break;
|
||||
*pp++ = cp; /* record this search domain */
|
||||
while (*cp) { /* zero-terminate it */
|
||||
if (*cp == ' ' || *cp == '\t') {
|
||||
*cp++ = '\0';
|
||||
break;
|
||||
}
|
||||
cp++;
|
||||
}
|
||||
}
|
||||
*pp = NULL; /* statp->dnsrch has MAXDNSRCH+1 items */
|
||||
if (pp > statp->dnsrch)
|
||||
return 1;
|
||||
}
|
||||
statp->defdname[0] = '\0'; /* no default domain name on Android */
|
||||
statp->dnsrch[0] = NULL;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* This function has to be reachable by res_data.c but not publicly. */
|
||||
int
|
||||
__res_vinit(res_state statp, int preinit) {
|
||||
@@ -220,12 +178,6 @@ __res_vinit(res_state statp, int preinit) {
|
||||
char *net;
|
||||
int dots;
|
||||
union res_sockaddr_union u[2];
|
||||
#ifdef ANDROID_CHANGES
|
||||
pid_t mypid = getpid();
|
||||
int use_proc_props = 0;
|
||||
int found_prop;
|
||||
char dnsProperty[PROP_VALUE_MAX];
|
||||
#endif
|
||||
|
||||
if ((statp->options & RES_INIT) != 0U)
|
||||
res_ndestroy(statp);
|
||||
@@ -318,74 +270,8 @@ __res_vinit(res_state statp, int preinit) {
|
||||
if (nserv > 0)
|
||||
statp->nscount = nserv;
|
||||
#endif
|
||||
#ifdef ANDROID_CHANGES /* READ FROM SYSTEM PROPERTIES */
|
||||
dns_last_change_counter = _get_dns_change_count();
|
||||
|
||||
nserv = 0;
|
||||
for(n = 1; n <= MAX_DNS_PROPERTIES && nserv < MAXNS; n++) {
|
||||
char propname[PROP_NAME_MAX];
|
||||
char propvalue[PROP_VALUE_MAX];
|
||||
|
||||
struct addrinfo hints, *ai;
|
||||
char sbuf[NI_MAXSERV];
|
||||
const size_t minsiz = sizeof(statp->_u._ext.ext->nsaddrs[0]);
|
||||
|
||||
/*
|
||||
* Check first for process-specific properties, and if those don't
|
||||
* exist, try the generic properties.
|
||||
*/
|
||||
found_prop = 0;
|
||||
if (n == 1 || use_proc_props) {
|
||||
snprintf(propname, sizeof(propname), "%s%d.%d", DNS_PROP_NAME_PREFIX, n, mypid);
|
||||
if(__system_property_get(propname, propvalue) < 1) {
|
||||
if (use_proc_props) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
found_prop = 1;
|
||||
use_proc_props = 1;
|
||||
}
|
||||
}
|
||||
if (!found_prop) {
|
||||
snprintf(propname, sizeof(propname), "%s%d", DNS_PROP_NAME_PREFIX, n);
|
||||
if(__system_property_get(propname, propvalue) < 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cp = propvalue;
|
||||
|
||||
while (*cp == ' ' || *cp == '\t')
|
||||
cp++;
|
||||
cp[strcspn(cp, ";# \t\n")] = '\0';
|
||||
if ((*cp != '\0') && (*cp != '\n')) {
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_family = PF_UNSPEC;
|
||||
hints.ai_socktype = SOCK_DGRAM; /*dummy*/
|
||||
hints.ai_flags = AI_NUMERICHOST;
|
||||
sprintf(sbuf, "%u", NAMESERVER_PORT);
|
||||
if (getaddrinfo(cp, sbuf, &hints, &ai) == 0 &&
|
||||
(size_t)ai->ai_addrlen <= minsiz) {
|
||||
if (statp->_u._ext.ext != NULL) {
|
||||
memcpy(&statp->_u._ext.ext->nsaddrs[nserv],
|
||||
ai->ai_addr, ai->ai_addrlen);
|
||||
}
|
||||
if ((size_t)ai->ai_addrlen <=
|
||||
sizeof(statp->nsaddr_list[nserv])) {
|
||||
memcpy(&statp->nsaddr_list[nserv],
|
||||
ai->ai_addr, ai->ai_addrlen);
|
||||
} else {
|
||||
statp->nsaddr_list[nserv].sin_family = 0;
|
||||
}
|
||||
freeaddrinfo(ai);
|
||||
nserv++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Add the domain search list */
|
||||
havesearch = load_domain_search_list(statp);
|
||||
#else /* !ANDROID_CHANGES - IGNORE resolv.conf in Android */
|
||||
#ifndef ANDROID_CHANGES /* !ANDROID_CHANGES - IGNORE resolv.conf in Android */
|
||||
#define MATCH(line, name) \
|
||||
(!strncmp(line, name, sizeof(name) - 1) && \
|
||||
(line[sizeof(name) - 1] == ' ' || \
|
||||
@@ -907,32 +793,17 @@ res_getservers(res_state statp, union res_sockaddr_union *set, int cnt) {
|
||||
}
|
||||
|
||||
#ifdef ANDROID_CHANGES
|
||||
static int _get_dns_change_count()
|
||||
void res_setiface(res_state statp, const char* iface)
|
||||
{
|
||||
if (dns_change_prop == NULL) {
|
||||
dns_change_prop = __system_property_find(DNS_CHANGE_PROP_NAME);
|
||||
}
|
||||
if (dns_change_prop != NULL) {
|
||||
char propvalue[PROP_VALUE_MAX];
|
||||
if (__system_property_read(dns_change_prop, NULL, propvalue) >= 1) {
|
||||
return atoi(propvalue);
|
||||
if (statp != NULL) {
|
||||
// set interface
|
||||
if (iface && iface[0] != '\0') {
|
||||
int len = sizeof(statp->iface);
|
||||
strncpy(statp->iface, iface, len - 1);
|
||||
statp->iface[len - 1] = '\0';
|
||||
} else {
|
||||
statp->iface[0] = '\0';
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int res_get_dns_changed()
|
||||
{
|
||||
int change_count;
|
||||
|
||||
change_count = _get_dns_change_count();
|
||||
if (change_count != dns_last_change_counter) {
|
||||
if (change_count != -1) {
|
||||
dns_last_change_counter = change_count;
|
||||
}
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endif /* ANDROID_CHANGES */
|
||||
|
@@ -370,10 +370,13 @@ res_nsend(res_state statp,
|
||||
ResolvCacheStatus cache_status = RESOLV_CACHE_UNSUPPORTED;
|
||||
#endif
|
||||
|
||||
#if !USE_RESOLV_CACHE
|
||||
if (statp->nscount == 0) {
|
||||
errno = ESRCH;
|
||||
return (-1);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (anssiz < HFIXEDSZ) {
|
||||
errno = EINVAL;
|
||||
return (-1);
|
||||
@@ -385,17 +388,27 @@ res_nsend(res_state statp,
|
||||
terrno = ETIMEDOUT;
|
||||
|
||||
#if USE_RESOLV_CACHE
|
||||
cache = __get_res_cache();
|
||||
if (cache != NULL) {
|
||||
int anslen = 0;
|
||||
cache_status = _resolv_cache_lookup(
|
||||
cache, buf, buflen,
|
||||
ans, anssiz, &anslen);
|
||||
// get the cache associated with the interface
|
||||
cache = __get_res_cache(statp->iface);
|
||||
if (cache != NULL) {
|
||||
int anslen = 0;
|
||||
cache_status = _resolv_cache_lookup(
|
||||
cache, buf, buflen,
|
||||
ans, anssiz, &anslen);
|
||||
|
||||
if (cache_status == RESOLV_CACHE_FOUND) {
|
||||
return anslen;
|
||||
}
|
||||
}
|
||||
if (cache_status == RESOLV_CACHE_FOUND) {
|
||||
return anslen;
|
||||
} else {
|
||||
// had a cache miss for a known interface, so populate the thread private
|
||||
// data so the normal resolve path can do its thing
|
||||
_resolv_populate_res_for_iface(statp);
|
||||
}
|
||||
}
|
||||
|
||||
if (statp->nscount == 0) {
|
||||
errno = ESRCH;
|
||||
return (-1);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@@ -50,7 +50,7 @@
|
||||
#endif
|
||||
|
||||
static pthread_key_t _res_key;
|
||||
static pthread_once_t _res_once;
|
||||
static pthread_once_t _res_once = PTHREAD_ONCE_INIT;
|
||||
|
||||
typedef struct {
|
||||
int _h_errno;
|
||||
|
@@ -21,6 +21,8 @@
|
||||
#include <stdint.h>
|
||||
#include <sys/auxv.h>
|
||||
|
||||
struct abort_msg_t;
|
||||
|
||||
// When the kernel starts the dynamic linker, it passes a pointer to a block
|
||||
// of memory containing argc, the argv array, the environment variable array,
|
||||
// and the array of ELF aux vectors. This class breaks that block up into its
|
||||
@@ -67,6 +69,8 @@ class KernelArgumentBlock {
|
||||
char** envp;
|
||||
Elf32_auxv_t* auxv;
|
||||
|
||||
abort_msg_t** abort_message_ptr;
|
||||
|
||||
private:
|
||||
// Disallow copy and assignment.
|
||||
KernelArgumentBlock(const KernelArgumentBlock&);
|
||||
|
@@ -67,6 +67,20 @@ enum {
|
||||
ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
|
||||
};
|
||||
|
||||
struct abort_msg_t {
|
||||
size_t size;
|
||||
char msg[0];
|
||||
};
|
||||
|
||||
__LIBC_HIDDEN__ void __libc_set_abort_message(const char* msg);
|
||||
|
||||
//
|
||||
// Formats a message to the log (priority 'fatal'), then aborts.
|
||||
//
|
||||
|
||||
__LIBC_HIDDEN__ __noreturn void __libc_fatal(const char* format, ...)
|
||||
__attribute__((__format__(printf, 1, 2)));
|
||||
|
||||
//
|
||||
// Formatting routines for the C library's internal debugging.
|
||||
// Unlike the usual alternatives, these don't allocate.
|
||||
|
@@ -28,47 +28,65 @@
|
||||
#ifndef _RESOLV_CACHE_H_
|
||||
#define _RESOLV_CACHE_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
struct __res_state;
|
||||
struct resolv_cache; /* forward */
|
||||
|
||||
/* gets the cache for the default interface. Might be NULL*/
|
||||
extern struct resolv_cache* __get_res_cache(void);
|
||||
|
||||
/* get the cache for a specified interface. Can be NULL*/
|
||||
extern struct resolv_cache* __get_res_cache_for_iface(const char* ifname);
|
||||
/* gets the cache for an interface. Set ifname argument to NULL or
|
||||
* empty buffer ('\0') to get cache for default interface.
|
||||
* returned cache might be NULL*/
|
||||
__LIBC_HIDDEN__
|
||||
extern struct resolv_cache* __get_res_cache(const char* ifname);
|
||||
|
||||
/* this gets called everytime we detect some changes in the DNS configuration
|
||||
* and will flush the cache */
|
||||
__LIBC_HIDDEN__
|
||||
extern void _resolv_cache_reset( unsigned generation );
|
||||
|
||||
/* Gets the address of the n:th name server for the default interface
|
||||
* Return length of address on success else 0.
|
||||
* Note: The first name server is at n = 1 */
|
||||
__LIBC_HIDDEN__
|
||||
extern int _resolv_cache_get_nameserver(int n, char* addr, int addrLen);
|
||||
|
||||
/* Gets the address of the n:th name server for a certain interface
|
||||
* Return length of address on success else 0.
|
||||
* Note: The first name server is at n = 1 */
|
||||
__LIBC_HIDDEN__
|
||||
extern int _resolv_cache_get_nameserver_for_iface(const char* ifname, int n,
|
||||
char* addr, int addrLen);
|
||||
|
||||
/* Gets addrinfo of the n:th name server associated with an interface.
|
||||
* NULL is returned if no address if found.
|
||||
* Note: The first name server is at n = 1. */
|
||||
__LIBC_HIDDEN__
|
||||
extern struct addrinfo* _resolv_cache_get_nameserver_addr_for_iface(const char* ifname, int n);
|
||||
|
||||
/* Gets addrinfo of the n:th name server associated with the default interface
|
||||
* NULL is returned if no address if found.
|
||||
* Note: The first name server is at n = 1. */
|
||||
__LIBC_HIDDEN__
|
||||
extern struct addrinfo* _resolv_cache_get_nameserver_addr(int n);
|
||||
|
||||
/* gets the address associated with the default interface */
|
||||
__LIBC_HIDDEN__
|
||||
extern struct in_addr* _resolv_get_addr_of_default_iface();
|
||||
|
||||
/* gets the address associated with the specified interface */
|
||||
__LIBC_HIDDEN__
|
||||
extern struct in_addr* _resolv_get_addr_of_iface(const char* ifname);
|
||||
|
||||
/* Get name of default interface */
|
||||
extern char* _resolv_get_default_iface();
|
||||
/* Copy the name of the default interface to provided buffer.
|
||||
* Return length of buffer on success on failure -1 is returned */
|
||||
__LIBC_HIDDEN__
|
||||
extern int _resolv_get_default_iface(char* buff, int buffLen);
|
||||
|
||||
/* sets the name server addresses to the provided res_state structure. The
|
||||
* name servers are retrieved from the cache which is associated
|
||||
* with the interface to which the res_state structure is associated */
|
||||
__LIBC_HIDDEN__
|
||||
extern int _resolv_populate_res_for_iface(struct __res_state* statp);
|
||||
|
||||
typedef enum {
|
||||
RESOLV_CACHE_UNSUPPORTED, /* the cache can't handle that kind of queries */
|
||||
@@ -77,6 +95,7 @@ typedef enum {
|
||||
RESOLV_CACHE_FOUND /* the cache found the answer */
|
||||
} ResolvCacheStatus;
|
||||
|
||||
__LIBC_HIDDEN__
|
||||
extern ResolvCacheStatus
|
||||
_resolv_cache_lookup( struct resolv_cache* cache,
|
||||
const void* query,
|
||||
@@ -88,6 +107,7 @@ _resolv_cache_lookup( struct resolv_cache* cache,
|
||||
/* add a (query,answer) to the cache, only call if _resolv_cache_lookup
|
||||
* did return RESOLV_CACHE_NOTFOUND
|
||||
*/
|
||||
__LIBC_HIDDEN__
|
||||
extern void
|
||||
_resolv_cache_add( struct resolv_cache* cache,
|
||||
const void* query,
|
||||
@@ -96,6 +116,7 @@ _resolv_cache_add( struct resolv_cache* cache,
|
||||
int answerlen );
|
||||
|
||||
/* Notify the cache a request failed */
|
||||
__LIBC_HIDDEN__
|
||||
extern void
|
||||
_resolv_cache_query_failed( struct resolv_cache* cache,
|
||||
const void* query,
|
||||
|
@@ -48,7 +48,8 @@ __BEGIN_DECLS
|
||||
extern void _resolv_set_default_iface(const char* ifname);
|
||||
|
||||
/* set name servers for an interface */
|
||||
extern void _resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numservers);
|
||||
extern void _resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numservers,
|
||||
const char *domains);
|
||||
|
||||
/* tell resolver of the address of an interface */
|
||||
extern void _resolv_set_addr_of_iface(const char* ifname, struct in_addr* addr);
|
||||
@@ -59,6 +60,21 @@ extern void _resolv_flush_cache_for_default_iface();
|
||||
/* flush the cache associated with a certain interface */
|
||||
extern void _resolv_flush_cache_for_iface(const char* ifname);
|
||||
|
||||
/* set a pid to use the name servers of the specified interface */
|
||||
extern void _resolv_set_iface_for_pid(const char* ifname, int pid);
|
||||
|
||||
/* clear pid from being associated with an interface */
|
||||
extern void _resolv_clear_iface_for_pid(int pid);
|
||||
|
||||
/** Gets the name of the interface to which the pid is attached.
|
||||
* On error, -1 is returned.
|
||||
* If no interface is found, 0 is returned and buff is set to empty ('\0').
|
||||
* If an interface is found, the name is copied to buff and the length of the name is returned.
|
||||
* Arguments: pid The pid to find an interface for
|
||||
* buff A buffer to copy the result to
|
||||
* buffLen Length of buff. An interface is at most IF_NAMESIZE in length */
|
||||
extern int _resolv_get_pids_associated_interface(int pid, char* buff, int buffLen);
|
||||
|
||||
#endif /* _BIONIC_RESOLV_IFACE_FUNCTIONS_DECLARED */
|
||||
|
||||
__END_DECLS
|
||||
|
@@ -56,6 +56,7 @@
|
||||
|
||||
#include <resolv.h>
|
||||
#include "resolv_static.h"
|
||||
#include <net/if.h>
|
||||
|
||||
/*
|
||||
* Revision information. This is the release date in YYYYMMDD format.
|
||||
@@ -139,6 +140,7 @@ struct res_sym {
|
||||
struct __res_state_ext;
|
||||
|
||||
struct __res_state {
|
||||
char iface[IF_NAMESIZE+1];
|
||||
int retrans; /* retransmission time interval */
|
||||
int retry; /* number of times to retransmit */
|
||||
#ifdef sun
|
||||
@@ -491,7 +493,7 @@ void res_setservers(res_state,
|
||||
int res_getservers(res_state,
|
||||
union res_sockaddr_union *, int);
|
||||
|
||||
int res_get_dns_changed();
|
||||
void res_setiface();
|
||||
u_int res_randomid(void);
|
||||
|
||||
__END_DECLS
|
||||
|
@@ -1,188 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# this tool is used to check that the syscall numbers that are in
|
||||
# SYSCALLS.TXT correspond to those found in the Linux kernel sources
|
||||
# for the arm, i386 and mips architectures
|
||||
#
|
||||
|
||||
import sys, re, string, os, commands
|
||||
from bionic_utils import *
|
||||
|
||||
# change this if necessary
|
||||
syscalls_txt = "SYSCALLS.TXT"
|
||||
|
||||
def usage():
|
||||
print "usage: checksyscalls [options] [kernel_headers_rootdir]"
|
||||
print " options: -v enable verbose mode"
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
linux_root = None
|
||||
syscalls_file = None
|
||||
|
||||
def parse_command_line(args):
|
||||
global linux_root, syscalls_file, verbose
|
||||
|
||||
program = args[0]
|
||||
args = args[1:]
|
||||
while len(args) > 0 and args[0][0] == "-":
|
||||
option = args[0][1:]
|
||||
args = args[1:]
|
||||
|
||||
if option == "v":
|
||||
D_setlevel(1)
|
||||
else:
|
||||
usage()
|
||||
|
||||
if len(args) > 2:
|
||||
usage()
|
||||
|
||||
if len(args) == 0:
|
||||
linux_root = find_kernel_headers()
|
||||
if linux_root == None:
|
||||
print "Could not locate original or system kernel headers root directory."
|
||||
print "Please specify one when calling this program, i.e. 'checksyscalls <headers-directory>'"
|
||||
sys.exit(1)
|
||||
print "using the following kernel headers root: '%s'" % linux_root
|
||||
else:
|
||||
linux_root = args[0]
|
||||
if not os.path.isdir(linux_root):
|
||||
print "the directory '%s' does not exist. aborting\n" % headers_root
|
||||
sys.exit(1)
|
||||
|
||||
parse_command_line(sys.argv)
|
||||
|
||||
syscalls_file = find_file_from_upwards(None, syscalls_txt)
|
||||
if not syscalls_file:
|
||||
print "could not locate the %s file. Aborting" % syscalls_txt
|
||||
sys.exit(1)
|
||||
|
||||
print "parsing %s" % syscalls_file
|
||||
|
||||
# read the syscalls description file
|
||||
#
|
||||
|
||||
parser = SysCallsTxtParser()
|
||||
parser.parse_file(syscalls_file)
|
||||
syscalls = parser.syscalls
|
||||
|
||||
re_nr_line = re.compile( r"#define __NR_(\w*)\s*\(__NR_SYSCALL_BASE\+\s*(\w*)\)" )
|
||||
re_nr_clock_line = re.compile( r"#define __NR_(\w*)\s*\(__NR_timer_create\+(\w*)\)" )
|
||||
re_arm_nr_line = re.compile( r"#define __ARM_NR_(\w*)\s*\(__ARM_NR_BASE\+\s*(\w*)\)" )
|
||||
re_x86_line = re.compile( r"#define __NR_(\w*)\s*([0-9]*)" )
|
||||
re_mips_line = re.compile( r"#define __NR_(\w*)\s*\(__NR_Linux\s*\+\s*([0-9]*)\)" )
|
||||
|
||||
# now read the Linux arm header
|
||||
def process_nr_line(line,dict):
|
||||
|
||||
m = re_mips_line.match(line)
|
||||
if m:
|
||||
if dict["Linux"]==4000:
|
||||
dict[m.group(1)] = int(m.group(2))
|
||||
return
|
||||
|
||||
m = re_nr_line.match(line)
|
||||
if m:
|
||||
dict[m.group(1)] = int(m.group(2))
|
||||
return
|
||||
|
||||
m = re_nr_clock_line.match(line)
|
||||
if m:
|
||||
dict[m.group(1)] = int(m.group(2)) + 259
|
||||
return
|
||||
|
||||
m = re_arm_nr_line.match(line)
|
||||
if m:
|
||||
offset_str = m.group(2)
|
||||
#print "%s = %s" % (m.group(1), offset_str)
|
||||
base = 10
|
||||
if offset_str.lower().startswith("0x"):
|
||||
# Processing something similar to
|
||||
# #define __ARM_NR_cmpxchg (__ARM_NR_BASE+0x00fff0)
|
||||
base = 16
|
||||
dict["ARM_"+m.group(1)] = int(offset_str, base) + 0x0f0000
|
||||
return
|
||||
|
||||
m = re_x86_line.match(line)
|
||||
if m:
|
||||
# try block because the ARM header has some #define _NR_XXXXX /* nothing */
|
||||
try:
|
||||
#print "%s = %s" % (m.group(1), m.group(2))
|
||||
dict[m.group(1)] = int(m.group(2))
|
||||
except:
|
||||
pass
|
||||
return
|
||||
|
||||
|
||||
def process_header(header_file,dict):
|
||||
fp = open(header_file)
|
||||
D("reading "+header_file)
|
||||
for line in fp.xreadlines():
|
||||
line = line.strip()
|
||||
if not line: continue
|
||||
process_nr_line(line,dict)
|
||||
fp.close()
|
||||
|
||||
arm_dict = {}
|
||||
x86_dict = {}
|
||||
mips_dict = {}
|
||||
|
||||
# remove trailing slash from the linux_root, if any
|
||||
if linux_root[-1] == '/':
|
||||
linux_root = linux_root[:-1]
|
||||
|
||||
arm_unistd = find_arch_header(linux_root, "arm", "unistd.h")
|
||||
if not arm_unistd:
|
||||
print "WEIRD: Could not locate the ARM unistd.h kernel header file,"
|
||||
print "maybe using a different set of kernel headers might help."
|
||||
sys.exit(1)
|
||||
|
||||
# on recent kernels, asm-i386 and asm-x64_64 have been merged into asm-x86
|
||||
# with two distinct unistd_32.h and unistd_64.h definition files.
|
||||
# take care of this here
|
||||
#
|
||||
x86_unistd = find_arch_header(linux_root, "i386", "unistd.h")
|
||||
if not x86_unistd:
|
||||
x86_unistd = find_arch_header(linux_root, "x86", "unistd_32.h")
|
||||
if not x86_unistd:
|
||||
print "WEIRD: Could not locate the i386/x86 unistd.h header file,"
|
||||
print "maybe using a different set of kernel headers might help."
|
||||
sys.exit(1)
|
||||
|
||||
mips_unistd = find_arch_header(linux_root, "mips", "unistd.h")
|
||||
if not mips_unistd:
|
||||
print "WEIRD: Could not locate the Mips unistd.h kernel header file,"
|
||||
print "maybe using a different set of kernel headers might help."
|
||||
sys.exit(1)
|
||||
|
||||
process_header( arm_unistd, arm_dict )
|
||||
process_header( x86_unistd, x86_dict )
|
||||
process_header( mips_unistd, mips_dict )
|
||||
|
||||
# now perform the comparison
|
||||
errors = 0
|
||||
|
||||
def check_syscalls(archname, idname, arch_dict):
|
||||
errors = 0
|
||||
for sc in syscalls:
|
||||
sc_name = sc["name"]
|
||||
sc_id = sc[idname]
|
||||
if sc_id == -1:
|
||||
sc_id = sc["common"]
|
||||
if sc_id >= 0:
|
||||
if not arch_dict.has_key(sc_name):
|
||||
print "error: %s syscall %s not defined, should be %d" % (archname, sc_name, sc_id)
|
||||
errors += 1
|
||||
elif arch_dict[sc_name] != sc_id:
|
||||
print "error: %s syscall %s should be %d instead of %d" % (archname, sc_name, arch_dict[sc_name], sc_id)
|
||||
errors += 1
|
||||
return errors
|
||||
|
||||
errors += check_syscalls("arm", "armid", arm_dict)
|
||||
errors += check_syscalls("x86", "x86id", x86_dict)
|
||||
errors += check_syscalls("mips", "mipsid", mips_dict)
|
||||
|
||||
if errors == 0:
|
||||
print "congratulations, everything's fine !!"
|
||||
else:
|
||||
print "correct %d errors !!" % errors
|
Binary file not shown.
@@ -60,6 +60,9 @@ LOCAL_MODULE_SUFFIX := $(TARGET_EXECUTABLE_SUFFIX)
|
||||
# just for this module
|
||||
LOCAL_NO_CRT := true
|
||||
|
||||
# TODO: split out the asflags.
|
||||
LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
|
||||
|
||||
include $(BUILD_SYSTEM)/dynamic_binary.mk
|
||||
|
||||
# See build/core/executable.mk
|
||||
|
@@ -52,8 +52,12 @@ enum debugger_action_t {
|
||||
|
||||
/* message sent over the socket */
|
||||
struct debugger_msg_t {
|
||||
debugger_action_t action;
|
||||
pid_t tid;
|
||||
// version 1 included:
|
||||
debugger_action_t action;
|
||||
pid_t tid;
|
||||
|
||||
// version 2 added:
|
||||
uintptr_t abort_msg_address;
|
||||
};
|
||||
|
||||
// see man(2) prctl, specifically the section about PR_GET_NAME
|
||||
@@ -154,14 +158,14 @@ static bool haveSiginfo(int signum) {
|
||||
sigemptyset(&newact.sa_mask);
|
||||
|
||||
if (sigaction(signum, &newact, &oldact) < 0) {
|
||||
__libc_format_log(ANDROID_LOG_FATAL, "libc", "Failed testing for SA_SIGINFO: %s",
|
||||
__libc_format_log(ANDROID_LOG_WARN, "libc", "Failed testing for SA_SIGINFO: %s",
|
||||
strerror(errno));
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
bool ret = (oldact.sa_flags & SA_SIGINFO) != 0;
|
||||
|
||||
if (sigaction(signum, &oldact, NULL) == -1) {
|
||||
__libc_format_log(ANDROID_LOG_FATAL, "libc", "Restore failed in test for SA_SIGINFO: %s",
|
||||
__libc_format_log(ANDROID_LOG_WARN, "libc", "Restore failed in test for SA_SIGINFO: %s",
|
||||
strerror(errno));
|
||||
}
|
||||
return ret;
|
||||
@@ -186,19 +190,17 @@ void debuggerd_signal_handler(int n, siginfo_t* info, void*) {
|
||||
int s = socket_abstract_client(DEBUGGER_SOCKET_NAME, SOCK_STREAM);
|
||||
|
||||
if (s >= 0) {
|
||||
/* debugger knows our pid from the credentials on the
|
||||
* local socket but we need to tell it our tid. It
|
||||
* is paranoid and will verify that we are giving a tid
|
||||
* that's actually in our process
|
||||
*/
|
||||
int ret;
|
||||
// debuggerd knows our pid from the credentials on the
|
||||
// local socket but we need to tell it the tid of the crashing thread.
|
||||
// debuggerd will be paranoid and verify that we sent a tid
|
||||
// that's actually in our process.
|
||||
debugger_msg_t msg;
|
||||
msg.action = DEBUGGER_ACTION_CRASH;
|
||||
msg.tid = tid;
|
||||
ret = TEMP_FAILURE_RETRY(write(s, &msg, sizeof(msg)));
|
||||
msg.abort_msg_address = reinterpret_cast<uintptr_t>(gAbortMessage);
|
||||
int ret = TEMP_FAILURE_RETRY(write(s, &msg, sizeof(msg)));
|
||||
if (ret == sizeof(msg)) {
|
||||
/* if the write failed, there is no point to read on
|
||||
* the file descriptor. */
|
||||
// if the write failed, there is no point trying to read a response.
|
||||
ret = TEMP_FAILURE_RETRY(read(s, &tid, 1));
|
||||
int saved_errno = errno;
|
||||
notify_gdb_of_libraries();
|
||||
|
@@ -105,6 +105,8 @@ static soinfo* gLdPreloads[LDPRELOAD_MAX + 1];
|
||||
|
||||
__LIBC_HIDDEN__ int gLdDebugVerbosity;
|
||||
|
||||
__LIBC_HIDDEN__ abort_msg_t* gAbortMessage = NULL; // For debuggerd.
|
||||
|
||||
enum RelocationKind {
|
||||
kRelocAbsolute = 0,
|
||||
kRelocRelative,
|
||||
@@ -171,8 +173,7 @@ size_t linker_get_error_buffer_size() {
|
||||
*/
|
||||
extern "C" void __attribute__((noinline)) __attribute__((visibility("default"))) rtld_db_dlactivity();
|
||||
|
||||
static r_debug _r_debug = {1, NULL, &rtld_db_dlactivity,
|
||||
RT_CONSISTENT, 0};
|
||||
static r_debug _r_debug = {1, NULL, &rtld_db_dlactivity, RT_CONSISTENT, 0};
|
||||
static link_map_t* r_debug_tail = 0;
|
||||
|
||||
static pthread_mutex_t gDebugMutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
@@ -800,14 +801,8 @@ static int soinfo_unload(soinfo* si) {
|
||||
for (Elf32_Dyn* d = si->dynamic; d->d_tag != DT_NULL; ++d) {
|
||||
if (d->d_tag == DT_NEEDED) {
|
||||
const char* library_name = si->strtab + d->d_un.d_val;
|
||||
soinfo* lsi = find_loaded_library(library_name);
|
||||
if (lsi != NULL) {
|
||||
TRACE("%s needs to unload %s", si->name, lsi->name);
|
||||
soinfo_unload(lsi);
|
||||
} else {
|
||||
// TODO: should we return -1 in this case?
|
||||
DL_ERR("\"%s\": could not unload dependent library", si->name);
|
||||
}
|
||||
TRACE("%s needs to unload %s", si->name, library_name);
|
||||
soinfo_unload(find_loaded_library(library_name));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1160,21 +1155,6 @@ static int mips_relocate_got(soinfo* si, soinfo* needed[]) {
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Please read the "Initialization and Termination functions" functions.
|
||||
* of the linker design note in bionic/linker/README.TXT to understand
|
||||
* what the following code is doing.
|
||||
*
|
||||
* The important things to remember are:
|
||||
*
|
||||
* DT_PREINIT_ARRAY must be called first for executables, and should
|
||||
* not appear in shared libraries.
|
||||
*
|
||||
* DT_INIT should be called before DT_INIT_ARRAY if both are present
|
||||
*
|
||||
* DT_FINI should be called after DT_FINI_ARRAY if both are present
|
||||
*
|
||||
* DT_FINI_ARRAY must be parsed in reverse order.
|
||||
*/
|
||||
void soinfo::CallArray(const char* array_name UNUSED, linker_function_t* functions, size_t count, bool reverse) {
|
||||
if (functions == NULL) {
|
||||
return;
|
||||
@@ -1209,6 +1189,8 @@ void soinfo::CallFunction(const char* function_name UNUSED, linker_function_t fu
|
||||
}
|
||||
|
||||
void soinfo::CallPreInitConstructors() {
|
||||
// DT_PREINIT_ARRAY functions are called before any other constructors for executables,
|
||||
// but ignored in a shared library.
|
||||
CallArray("DT_PREINIT_ARRAY", preinit_array, preinit_array_count, false);
|
||||
}
|
||||
|
||||
@@ -1229,31 +1211,36 @@ void soinfo::CallConstructors() {
|
||||
// out above, the libc constructor will be called again (recursively!).
|
||||
constructors_called = true;
|
||||
|
||||
if (!(flags & FLAG_EXE) && preinit_array) {
|
||||
DL_ERR("shared library \"%s\" has a preinit_array table @ %p", name, preinit_array);
|
||||
return;
|
||||
if ((flags & FLAG_EXE) == 0 && preinit_array != NULL) {
|
||||
// The GNU dynamic linker silently ignores these, but we warn the developer.
|
||||
PRINT("\"%s\": ignoring %d-entry DT_PREINIT_ARRAY in shared library!",
|
||||
name, preinit_array_count);
|
||||
}
|
||||
|
||||
if (dynamic != NULL) {
|
||||
for (Elf32_Dyn* d = dynamic; d->d_tag != DT_NULL; ++d) {
|
||||
if (d->d_tag == DT_NEEDED) {
|
||||
const char* library_name = strtab + d->d_un.d_val;
|
||||
soinfo* lsi = find_loaded_library(library_name);
|
||||
if (lsi == NULL) {
|
||||
DL_ERR("\"%s\": could not initialize dependent library", name);
|
||||
} else {
|
||||
lsi->CallConstructors();
|
||||
}
|
||||
TRACE("\"%s\": calling constructors in DT_NEEDED \"%s\"", name, library_name);
|
||||
find_loaded_library(library_name)->CallConstructors();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TRACE("\"%s\": calling constructors", name);
|
||||
|
||||
// DT_INIT should be called before DT_INIT_ARRAY if both are present.
|
||||
CallFunction("DT_INIT", init_func);
|
||||
CallArray("DT_INIT_ARRAY", init_array, init_array_count, false);
|
||||
}
|
||||
|
||||
void soinfo::CallDestructors() {
|
||||
TRACE("\"%s\": calling destructors", name);
|
||||
|
||||
// DT_FINI_ARRAY must be parsed in reverse order.
|
||||
CallArray("DT_FINI_ARRAY", fini_array, fini_array_count, true);
|
||||
|
||||
// DT_FINI should be called after DT_FINI_ARRAY if both are present.
|
||||
CallFunction("DT_FINI", fini_func);
|
||||
}
|
||||
|
||||
@@ -1352,7 +1339,7 @@ static bool soinfo_link_image(soinfo* si) {
|
||||
&si->ARM_exidx, &si->ARM_exidx_count);
|
||||
#endif
|
||||
|
||||
/* extract useful information from dynamic section */
|
||||
// Extract useful information from dynamic section.
|
||||
uint32_t needed_count = 0;
|
||||
for (Elf32_Dyn* d = si->dynamic; d->d_tag != DT_NULL; ++d) {
|
||||
DEBUG("d = %p, d[0](tag) = 0x%08x d[1](val) = 0x%08x", d, d->d_tag, d->d_un.d_val);
|
||||
@@ -1403,29 +1390,29 @@ static bool soinfo_link_image(soinfo* si) {
|
||||
return false;
|
||||
case DT_INIT:
|
||||
si->init_func = reinterpret_cast<linker_function_t>(base + d->d_un.d_ptr);
|
||||
DEBUG("%s constructors (init func) found at %p", si->name, si->init_func);
|
||||
DEBUG("%s constructors (DT_INIT) found at %p", si->name, si->init_func);
|
||||
break;
|
||||
case DT_FINI:
|
||||
si->fini_func = reinterpret_cast<linker_function_t>(base + d->d_un.d_ptr);
|
||||
DEBUG("%s destructors (fini func) found at %p", si->name, si->fini_func);
|
||||
DEBUG("%s destructors (DT_FINI) found at %p", si->name, si->fini_func);
|
||||
break;
|
||||
case DT_INIT_ARRAY:
|
||||
si->init_array = reinterpret_cast<linker_function_t*>(base + d->d_un.d_ptr);
|
||||
DEBUG("%s constructors (init_array) found at %p", si->name, si->init_array);
|
||||
DEBUG("%s constructors (DT_INIT_ARRAY) found at %p", si->name, si->init_array);
|
||||
break;
|
||||
case DT_INIT_ARRAYSZ:
|
||||
si->init_array_count = ((unsigned)d->d_un.d_val) / sizeof(Elf32_Addr);
|
||||
break;
|
||||
case DT_FINI_ARRAY:
|
||||
si->fini_array = reinterpret_cast<linker_function_t*>(base + d->d_un.d_ptr);
|
||||
DEBUG("%s destructors (fini_array) found at %p", si->name, si->fini_array);
|
||||
DEBUG("%s destructors (DT_FINI_ARRAY) found at %p", si->name, si->fini_array);
|
||||
break;
|
||||
case DT_FINI_ARRAYSZ:
|
||||
si->fini_array_count = ((unsigned)d->d_un.d_val) / sizeof(Elf32_Addr);
|
||||
break;
|
||||
case DT_PREINIT_ARRAY:
|
||||
si->preinit_array = reinterpret_cast<linker_function_t*>(base + d->d_un.d_ptr);
|
||||
DEBUG("%s constructors (preinit_array) found at %p", si->name, si->preinit_array);
|
||||
DEBUG("%s constructors (DT_PREINIT_ARRAY) found at %p", si->name, si->preinit_array);
|
||||
break;
|
||||
case DT_PREINIT_ARRAYSZ:
|
||||
si->preinit_array_count = ((unsigned)d->d_un.d_val) / sizeof(Elf32_Addr);
|
||||
@@ -1815,8 +1802,8 @@ extern "C" Elf32_Addr __linker_init(void* raw_args) {
|
||||
|
||||
Elf32_Addr linker_addr = args.getauxval(AT_BASE);
|
||||
|
||||
Elf32_Ehdr *elf_hdr = (Elf32_Ehdr*) linker_addr;
|
||||
Elf32_Phdr *phdr = (Elf32_Phdr*)((unsigned char*) linker_addr + elf_hdr->e_phoff);
|
||||
Elf32_Ehdr* elf_hdr = (Elf32_Ehdr*) linker_addr;
|
||||
Elf32_Phdr* phdr = (Elf32_Phdr*)((unsigned char*) linker_addr + elf_hdr->e_phoff);
|
||||
|
||||
soinfo linker_so;
|
||||
memset(&linker_so, 0, sizeof(soinfo));
|
||||
@@ -1841,6 +1828,7 @@ extern "C" Elf32_Addr __linker_init(void* raw_args) {
|
||||
|
||||
// We have successfully fixed our own relocations. It's safe to run
|
||||
// the main part of the linker now.
|
||||
args.abort_message_ptr = &gAbortMessage;
|
||||
Elf32_Addr start_address = __linker_init_post_relocation(args, linker_addr);
|
||||
|
||||
set_soinfo_pool_protection(PROT_READ);
|
||||
|
@@ -186,6 +186,7 @@ Elf32_Sym* dladdr_find_symbol(soinfo* si, const void* addr);
|
||||
Elf32_Sym* dlsym_handle_lookup(soinfo* si, const char* name);
|
||||
|
||||
void debuggerd_init();
|
||||
extern "C" abort_msg_t* gAbortMessage;
|
||||
extern "C" void notify_gdb_of_libraries();
|
||||
|
||||
char* linker_get_error_buffer();
|
||||
|
@@ -58,6 +58,7 @@ test_c_flags = \
|
||||
|
||||
test_src_files = \
|
||||
dirent_test.cpp \
|
||||
eventfd_test.cpp \
|
||||
fenv_test.cpp \
|
||||
getauxval_test.cpp \
|
||||
getcwd_test.cpp \
|
||||
|
47
tests/eventfd_test.cpp
Normal file
47
tests/eventfd_test.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (C) 2013 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#if !defined(__GLIBC__) // Android's prebuilt gcc's header files don't include <sys/eventfd.h>.
|
||||
|
||||
#include <sys/eventfd.h>
|
||||
|
||||
TEST(eventfd, smoke) {
|
||||
unsigned int initial_value = 2;
|
||||
int fd = eventfd(initial_value, O_NONBLOCK);
|
||||
ASSERT_NE(fd, -1);
|
||||
|
||||
eventfd_t value = 123;
|
||||
ASSERT_EQ(0, eventfd_read(fd, &value));
|
||||
ASSERT_EQ(initial_value, value);
|
||||
|
||||
// Reading clears the counter.
|
||||
ASSERT_EQ(-1, eventfd_read(fd, &value));
|
||||
ASSERT_EQ(EAGAIN, errno);
|
||||
|
||||
// Values written are added until the next read.
|
||||
ASSERT_EQ(0, eventfd_write(fd, 1));
|
||||
ASSERT_EQ(0, eventfd_write(fd, 1));
|
||||
ASSERT_EQ(0, eventfd_write(fd, 1));
|
||||
|
||||
ASSERT_EQ(0, eventfd_read(fd, &value));
|
||||
ASSERT_EQ(3U, value);
|
||||
|
||||
close(fd);
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user