xref: /rust-libc-0.2.174/src/psp.rs (revision c08c5073)
1 //! PSP C type definitions
2 //!
3 //! These type declarations are not enough, as they must be ultimately resolved
4 //! by the linker. Crates that use these definitions must, somewhere in the
5 //! crate graph, include a stub provider crate such as the `psp` crate.
6 
7 use crate::prelude::*;
8 
9 pub type intmax_t = i64;
10 pub type uintmax_t = u64;
11 
12 pub type size_t = usize;
13 pub type ptrdiff_t = isize;
14 pub type intptr_t = isize;
15 pub type uintptr_t = usize;
16 pub type ssize_t = isize;
17 
18 pub type SceKernelVTimerHandler = unsafe extern "C" fn(
19     uid: SceUid,
20     arg1: *mut SceKernelSysClock,
21     arg2: *mut SceKernelSysClock,
22     arg3: *mut c_void,
23 ) -> u32;
24 
25 pub type SceKernelVTimerHandlerWide =
26     unsafe extern "C" fn(uid: SceUid, arg1: i64, arg2: i64, arg3: *mut c_void) -> u32;
27 
28 pub type SceKernelThreadEventHandler =
29     unsafe extern "C" fn(mask: i32, thid: SceUid, common: *mut c_void) -> i32;
30 
31 pub type SceKernelAlarmHandler = unsafe extern "C" fn(common: *mut c_void) -> u32;
32 
33 pub type SceKernelCallbackFunction =
34     unsafe extern "C" fn(arg1: i32, arg2: i32, arg: *mut c_void) -> i32;
35 
36 pub type SceKernelThreadEntry = unsafe extern "C" fn(args: usize, argp: *mut c_void) -> i32;
37 
38 pub type PowerCallback = extern "C" fn(unknown: i32, power_info: i32);
39 
40 pub type IoPermissions = i32;
41 
42 pub type UmdCallback = fn(unknown: i32, event: i32) -> i32;
43 
44 pub type SceMpegRingbufferCb =
45     Option<unsafe extern "C" fn(data: *mut c_void, num_packets: i32, param: *mut c_void) -> i32>;
46 
47 pub type GuCallback = Option<extern "C" fn(id: i32, arg: *mut c_void)>;
48 pub type GuSwapBuffersCallback =
49     Option<extern "C" fn(display: *mut *mut c_void, render: *mut *mut c_void)>;
50 
51 pub type SceNetAdhocctlHandler =
52     Option<unsafe extern "C" fn(flag: i32, error: i32, unknown: *mut c_void)>;
53 
54 pub type AdhocMatchingCallback = Option<
55     unsafe extern "C" fn(
56         matching_id: i32,
57         event: i32,
58         mac: *mut u8,
59         opt_len: i32,
60         opt_data: *mut c_void,
61     ),
62 >;
63 
64 pub type SceNetApctlHandler = Option<
65     unsafe extern "C" fn(oldState: i32, newState: i32, event: i32, error: i32, pArg: *mut c_void),
66 >;
67 
68 pub type HttpMallocFunction = Option<unsafe extern "C" fn(size: usize) -> *mut c_void>;
69 pub type HttpReallocFunction =
70     Option<unsafe extern "C" fn(p: *mut c_void, size: usize) -> *mut c_void>;
71 pub type HttpFreeFunction = Option<unsafe extern "C" fn(p: *mut c_void)>;
72 pub type HttpPasswordCB = Option<
73     unsafe extern "C" fn(
74         request: i32,
75         auth_type: HttpAuthType,
76         realm: *const u8,
77         username: *mut u8,
78         password: *mut u8,
79         need_entity: i32,
80         entity_body: *mut *mut u8,
81         entity_size: *mut usize,
82         save: *mut i32,
83     ) -> i32,
84 >;
85 
86 pub type socklen_t = u32;
87 
88 e! {
89     #[repr(u32)]
90     pub enum AudioFormat {
91         Stereo = 0,
92         Mono = 0x10,
93     }
94 
95     #[repr(u32)]
96     pub enum DisplayMode {
97         Lcd = 0,
98     }
99 
100     #[repr(u32)]
101     pub enum DisplayPixelFormat {
102         Psm5650 = 0,
103         Psm5551 = 1,
104         Psm4444 = 2,
105         Psm8888 = 3,
106     }
107 
108     #[repr(u32)]
109     pub enum DisplaySetBufSync {
110         Immediate = 0,
111         NextFrame = 1,
112     }
113 
114     #[repr(i32)]
115     pub enum AudioOutputFrequency {
116         Khz48 = 48000,
117         Khz44_1 = 44100,
118         Khz32 = 32000,
119         Khz24 = 24000,
120         Khz22_05 = 22050,
121         Khz16 = 16000,
122         Khz12 = 12000,
123         Khz11_025 = 11025,
124         Khz8 = 8000,
125     }
126 
127     #[repr(i32)]
128     pub enum AudioInputFrequency {
129         Khz44_1 = 44100,
130         Khz22_05 = 22050,
131         Khz11_025 = 11025,
132     }
133 
134     #[repr(u32)]
135     pub enum CtrlMode {
136         Digital = 0,
137         Analog,
138     }
139 
140     #[repr(i32)]
141     pub enum GeMatrixType {
142         Bone0 = 0,
143         Bone1,
144         Bone2,
145         Bone3,
146         Bone4,
147         Bone5,
148         Bone6,
149         Bone7,
150         World,
151         View,
152         Projection,
153         TexGen,
154     }
155 
156     #[repr(i32)]
157     pub enum GeListState {
158         Done = 0,
159         Queued,
160         DrawingDone,
161         StallReached,
162         CancelDone,
163     }
164 
165     #[repr(u8)]
166     pub enum GeCommand {
167         Nop = 0,
168         Vaddr = 0x1,
169         Iaddr = 0x2,
170         Prim = 0x4,
171         Bezier = 0x5,
172         Spline = 0x6,
173         BoundingBox = 0x7,
174         Jump = 0x8,
175         BJump = 0x9,
176         Call = 0xa,
177         Ret = 0xb,
178         End = 0xc,
179         Signal = 0xe,
180         Finish = 0xf,
181         Base = 0x10,
182         VertexType = 0x12,
183         OffsetAddr = 0x13,
184         Origin = 0x14,
185         Region1 = 0x15,
186         Region2 = 0x16,
187         LightingEnable = 0x17,
188         LightEnable0 = 0x18,
189         LightEnable1 = 0x19,
190         LightEnable2 = 0x1a,
191         LightEnable3 = 0x1b,
192         DepthClampEnable = 0x1c,
193         CullFaceEnable = 0x1d,
194         TextureMapEnable = 0x1e,
195         FogEnable = 0x1f,
196         DitherEnable = 0x20,
197         AlphaBlendEnable = 0x21,
198         AlphaTestEnable = 0x22,
199         ZTestEnable = 0x23,
200         StencilTestEnable = 0x24,
201         AntiAliasEnable = 0x25,
202         PatchCullEnable = 0x26,
203         ColorTestEnable = 0x27,
204         LogicOpEnable = 0x28,
205         BoneMatrixNumber = 0x2a,
206         BoneMatrixData = 0x2b,
207         MorphWeight0 = 0x2c,
208         MorphWeight1 = 0x2d,
209         MorphWeight2 = 0x2e,
210         MorphWeight3 = 0x2f,
211         MorphWeight4 = 0x30,
212         MorphWeight5 = 0x31,
213         MorphWeight6 = 0x32,
214         MorphWeight7 = 0x33,
215         PatchDivision = 0x36,
216         PatchPrimitive = 0x37,
217         PatchFacing = 0x38,
218         WorldMatrixNumber = 0x3a,
219         WorldMatrixData = 0x3b,
220         ViewMatrixNumber = 0x3c,
221         ViewMatrixData = 0x3d,
222         ProjMatrixNumber = 0x3e,
223         ProjMatrixData = 0x3f,
224         TGenMatrixNumber = 0x40,
225         TGenMatrixData = 0x41,
226         ViewportXScale = 0x42,
227         ViewportYScale = 0x43,
228         ViewportZScale = 0x44,
229         ViewportXCenter = 0x45,
230         ViewportYCenter = 0x46,
231         ViewportZCenter = 0x47,
232         TexScaleU = 0x48,
233         TexScaleV = 0x49,
234         TexOffsetU = 0x4a,
235         TexOffsetV = 0x4b,
236         OffsetX = 0x4c,
237         OffsetY = 0x4d,
238         ShadeMode = 0x50,
239         ReverseNormal = 0x51,
240         MaterialUpdate = 0x53,
241         MaterialEmissive = 0x54,
242         MaterialAmbient = 0x55,
243         MaterialDiffuse = 0x56,
244         MaterialSpecular = 0x57,
245         MaterialAlpha = 0x58,
246         MaterialSpecularCoef = 0x5b,
247         AmbientColor = 0x5c,
248         AmbientAlpha = 0x5d,
249         LightMode = 0x5e,
250         LightType0 = 0x5f,
251         LightType1 = 0x60,
252         LightType2 = 0x61,
253         LightType3 = 0x62,
254         Light0X = 0x63,
255         Light0Y,
256         Light0Z,
257         Light1X,
258         Light1Y,
259         Light1Z,
260         Light2X,
261         Light2Y,
262         Light2Z,
263         Light3X,
264         Light3Y,
265         Light3Z,
266         Light0DirectionX = 0x6f,
267         Light0DirectionY,
268         Light0DirectionZ,
269         Light1DirectionX,
270         Light1DirectionY,
271         Light1DirectionZ,
272         Light2DirectionX,
273         Light2DirectionY,
274         Light2DirectionZ,
275         Light3DirectionX,
276         Light3DirectionY,
277         Light3DirectionZ,
278         Light0ConstantAtten = 0x7b,
279         Light0LinearAtten,
280         Light0QuadtraticAtten,
281         Light1ConstantAtten,
282         Light1LinearAtten,
283         Light1QuadtraticAtten,
284         Light2ConstantAtten,
285         Light2LinearAtten,
286         Light2QuadtraticAtten,
287         Light3ConstantAtten,
288         Light3LinearAtten,
289         Light3QuadtraticAtten,
290         Light0ExponentAtten = 0x87,
291         Light1ExponentAtten,
292         Light2ExponentAtten,
293         Light3ExponentAtten,
294         Light0CutoffAtten = 0x8b,
295         Light1CutoffAtten,
296         Light2CutoffAtten,
297         Light3CutoffAtten,
298         Light0Ambient = 0x8f,
299         Light0Diffuse,
300         Light0Specular,
301         Light1Ambient,
302         Light1Diffuse,
303         Light1Specular,
304         Light2Ambient,
305         Light2Diffuse,
306         Light2Specular,
307         Light3Ambient,
308         Light3Diffuse,
309         Light3Specular,
310         Cull = 0x9b,
311         FrameBufPtr = 0x9c,
312         FrameBufWidth = 0x9d,
313         ZBufPtr = 0x9e,
314         ZBufWidth = 0x9f,
315         TexAddr0 = 0xa0,
316         TexAddr1,
317         TexAddr2,
318         TexAddr3,
319         TexAddr4,
320         TexAddr5,
321         TexAddr6,
322         TexAddr7,
323         TexBufWidth0 = 0xa8,
324         TexBufWidth1,
325         TexBufWidth2,
326         TexBufWidth3,
327         TexBufWidth4,
328         TexBufWidth5,
329         TexBufWidth6,
330         TexBufWidth7,
331         ClutAddr = 0xb0,
332         ClutAddrUpper = 0xb1,
333         TransferSrc,
334         TransferSrcW,
335         TransferDst,
336         TransferDstW,
337         TexSize0 = 0xb8,
338         TexSize1,
339         TexSize2,
340         TexSize3,
341         TexSize4,
342         TexSize5,
343         TexSize6,
344         TexSize7,
345         TexMapMode = 0xc0,
346         TexShadeLs = 0xc1,
347         TexMode = 0xc2,
348         TexFormat = 0xc3,
349         LoadClut = 0xc4,
350         ClutFormat = 0xc5,
351         TexFilter = 0xc6,
352         TexWrap = 0xc7,
353         TexLevel = 0xc8,
354         TexFunc = 0xc9,
355         TexEnvColor = 0xca,
356         TexFlush = 0xcb,
357         TexSync = 0xcc,
358         Fog1 = 0xcd,
359         Fog2 = 0xce,
360         FogColor = 0xcf,
361         TexLodSlope = 0xd0,
362         FramebufPixFormat = 0xd2,
363         ClearMode = 0xd3,
364         Scissor1 = 0xd4,
365         Scissor2 = 0xd5,
366         MinZ = 0xd6,
367         MaxZ = 0xd7,
368         ColorTest = 0xd8,
369         ColorRef = 0xd9,
370         ColorTestmask = 0xda,
371         AlphaTest = 0xdb,
372         StencilTest = 0xdc,
373         StencilOp = 0xdd,
374         ZTest = 0xde,
375         BlendMode = 0xdf,
376         BlendFixedA = 0xe0,
377         BlendFixedB = 0xe1,
378         Dith0 = 0xe2,
379         Dith1,
380         Dith2,
381         Dith3,
382         LogicOp = 0xe6,
383         ZWriteDisable = 0xe7,
384         MaskRgb = 0xe8,
385         MaskAlpha = 0xe9,
386         TransferStart = 0xea,
387         TransferSrcPos = 0xeb,
388         TransferDstPos = 0xec,
389         TransferSize = 0xee,
390         Vscx = 0xf0,
391         Vscy = 0xf1,
392         Vscz = 0xf2,
393         Vtcs = 0xf3,
394         Vtct = 0xf4,
395         Vtcq = 0xf5,
396         Vcv = 0xf6,
397         Vap = 0xf7,
398         Vfc = 0xf8,
399         Vscv = 0xf9,
400 
401         Unknown03 = 0x03,
402         Unknown0D = 0x0d,
403         Unknown11 = 0x11,
404         Unknown29 = 0x29,
405         Unknown34 = 0x34,
406         Unknown35 = 0x35,
407         Unknown39 = 0x39,
408         Unknown4E = 0x4e,
409         Unknown4F = 0x4f,
410         Unknown52 = 0x52,
411         Unknown59 = 0x59,
412         Unknown5A = 0x5a,
413         UnknownB6 = 0xb6,
414         UnknownB7 = 0xb7,
415         UnknownD1 = 0xd1,
416         UnknownED = 0xed,
417         UnknownEF = 0xef,
418         UnknownFA = 0xfa,
419         UnknownFB = 0xfb,
420         UnknownFC = 0xfc,
421         UnknownFD = 0xfd,
422         UnknownFE = 0xfe,
423         NopFF = 0xff,
424     }
425 
426     #[repr(i32)]
427     pub enum SceSysMemPartitionId {
428         SceKernelUnknownPartition = 0,
429         SceKernelPrimaryKernelPartition = 1,
430         SceKernelPrimaryUserPartition = 2,
431         SceKernelOtherKernelPartition1 = 3,
432         SceKernelOtherKernelPartition2 = 4,
433         SceKernelVshellPARTITION = 5,
434         SceKernelScUserPartition = 6,
435         SceKernelMeUserPartition = 7,
436         SceKernelExtendedScKernelPartition = 8,
437         SceKernelExtendedSc2KernelPartition = 9,
438         SceKernelExtendedMeKernelPartition = 10,
439         SceKernelVshellKernelPartition = 11,
440         SceKernelExtendedKernelPartition = 12,
441     }
442 
443     #[repr(i32)]
444     pub enum SceSysMemBlockTypes {
445         Low = 0,
446         High,
447         Addr,
448     }
449 
450     #[repr(u32)]
451     pub enum Interrupt {
452         Gpio = 4,
453         Ata = 5,
454         Umd = 6,
455         Mscm0 = 7,
456         Wlan = 8,
457         Audio = 10,
458         I2c = 12,
459         Sircs = 14,
460         Systimer0 = 15,
461         Systimer1 = 16,
462         Systimer2 = 17,
463         Systimer3 = 18,
464         Thread0 = 19,
465         Nand = 20,
466         Dmacplus = 21,
467         Dma0 = 22,
468         Dma1 = 23,
469         Memlmd = 24,
470         Ge = 25,
471         Vblank = 30,
472         Mecodec = 31,
473         Hpremote = 36,
474         Mscm1 = 60,
475         Mscm2 = 61,
476         Thread1 = 65,
477         Interrupt = 66,
478     }
479 
480     #[repr(u32)]
481     pub enum SubInterrupt {
482         Gpio = Interrupt::Gpio as u32,
483         Ata = Interrupt::Ata as u32,
484         Umd = Interrupt::Umd as u32,
485         Dmacplus = Interrupt::Dmacplus as u32,
486         Ge = Interrupt::Ge as u32,
487         Display = Interrupt::Vblank as u32,
488     }
489 
490     #[repr(u32)]
491     pub enum SceKernelIdListType {
492         Thread = 1,
493         Semaphore = 2,
494         EventFlag = 3,
495         Mbox = 4,
496         Vpl = 5,
497         Fpl = 6,
498         Mpipe = 7,
499         Callback = 8,
500         ThreadEventHandler = 9,
501         Alarm = 10,
502         VTimer = 11,
503         SleepThread = 64,
504         DelayThread = 65,
505         SuspendThread = 66,
506         DormantThread = 67,
507     }
508 
509     #[repr(i32)]
510     pub enum UsbCamResolution {
511         Px160_120 = 0,
512         Px176_144 = 1,
513         Px320_240 = 2,
514         Px352_288 = 3,
515         Px640_480 = 4,
516         Px1024_768 = 5,
517         Px1280_960 = 6,
518         Px480_272 = 7,
519         Px360_272 = 8,
520     }
521 
522     #[repr(i32)]
523     pub enum UsbCamResolutionEx {
524         Px160_120 = 0,
525         Px176_144 = 1,
526         Px320_240 = 2,
527         Px352_288 = 3,
528         Px360_272 = 4,
529         Px480_272 = 5,
530         Px640_480 = 6,
531         Px1024_768 = 7,
532         Px1280_960 = 8,
533     }
534 
535     #[repr(i32)]
536     pub enum UsbCamDelay {
537         NoDelay = 0,
538         Delay10Sec = 1,
539         Delay20Sec = 2,
540         Delay30Sec = 3,
541     }
542 
543     #[repr(i32)]
544     pub enum UsbCamFrameRate {
545         Fps3_75 = 0,
546         Fps5 = 1,
547         Fps7_5 = 2,
548         Fps10 = 3,
549         Fps15 = 4,
550         Fps20 = 5,
551         Fps30 = 6,
552         Fps60 = 7,
553     }
554 
555     #[repr(i32)]
556     pub enum UsbCamWb {
557         Auto = 0,
558         Daylight = 1,
559         Fluorescent = 2,
560         Incadescent = 3,
561     }
562 
563     #[repr(i32)]
564     pub enum UsbCamEffectMode {
565         Normal = 0,
566         Negative = 1,
567         Blackwhite = 2,
568         Sepia = 3,
569         Blue = 4,
570         Red = 5,
571         Green = 6,
572     }
573 
574     #[repr(i32)]
575     pub enum UsbCamEvLevel {
576         Pos2_0 = 0,
577         Pos1_7 = 1,
578         Pos1_5 = 2,
579         Pos1_3 = 3,
580         Pos1_0 = 4,
581         Pos0_7 = 5,
582         Pos0_5 = 6,
583         Pos0_3 = 7,
584         Zero = 8,
585         Neg0_3,
586         Neg0_5,
587         Neg0_7,
588         Neg1_0,
589         Neg1_3,
590         Neg1_5,
591         Neg1_7,
592         Neg2_0,
593     }
594 
595     #[repr(i32)]
596     pub enum RtcCheckValidError {
597         InvalidYear = -1,
598         InvalidMonth = -2,
599         InvalidDay = -3,
600         InvalidHour = -4,
601         InvalidMinutes = -5,
602         InvalidSeconds = -6,
603         InvalidMicroseconds = -7,
604     }
605 
606     #[repr(u32)]
607     pub enum PowerTick {
608         All = 0,
609         Suspend = 1,
610         Display = 6,
611     }
612 
613     #[repr(u32)]
614     pub enum IoAssignPerms {
615         RdWr = 0,
616         RdOnly = 1,
617     }
618 
619     #[repr(u32)]
620     pub enum IoWhence {
621         Set = 0,
622         Cur = 1,
623         End = 2,
624     }
625 
626     #[repr(u32)]
627     pub enum UmdType {
628         Game = 0x10,
629         Video = 0x20,
630         Audio = 0x40,
631     }
632 
633     #[repr(u32)]
634     pub enum GuPrimitive {
635         Points = 0,
636         Lines = 1,
637         LineStrip = 2,
638         Triangles = 3,
639         TriangleStrip = 4,
640         TriangleFan = 5,
641         Sprites = 6,
642     }
643 
644     #[repr(u32)]
645     pub enum PatchPrimitive {
646         Points = 0,
647         LineStrip = 2,
648         TriangleStrip = 4,
649     }
650 
651     #[repr(u32)]
652     pub enum GuState {
653         AlphaTest = 0,
654         DepthTest = 1,
655         ScissorTest = 2,
656         StencilTest = 3,
657         Blend = 4,
658         CullFace = 5,
659         Dither = 6,
660         Fog = 7,
661         ClipPlanes = 8,
662         Texture2D = 9,
663         Lighting = 10,
664         Light0 = 11,
665         Light1 = 12,
666         Light2 = 13,
667         Light3 = 14,
668         LineSmooth = 15,
669         PatchCullFace = 16,
670         ColorTest = 17,
671         ColorLogicOp = 18,
672         FaceNormalReverse = 19,
673         PatchFace = 20,
674         Fragment2X = 21,
675     }
676 
677     #[repr(u32)]
678     pub enum MatrixMode {
679         Projection = 0,
680         View = 1,
681         Model = 2,
682         Texture = 3,
683     }
684 
685     #[repr(u32)]
686     pub enum TexturePixelFormat {
687         Psm5650 = 0,
688         Psm5551 = 1,
689         Psm4444 = 2,
690         Psm8888 = 3,
691         PsmT4 = 4,
692         PsmT8 = 5,
693         PsmT16 = 6,
694         PsmT32 = 7,
695         PsmDxt1 = 8,
696         PsmDxt3 = 9,
697         PsmDxt5 = 10,
698     }
699 
700     #[repr(u32)]
701     pub enum SplineMode {
702         FillFill = 0,
703         OpenFill = 1,
704         FillOpen = 2,
705         OpenOpen = 3,
706     }
707 
708     #[repr(u32)]
709     pub enum ShadingModel {
710         Flat = 0,
711         Smooth = 1,
712     }
713 
714     #[repr(u32)]
715     pub enum LogicalOperation {
716         Clear = 0,
717         And = 1,
718         AndReverse = 2,
719         Copy = 3,
720         AndInverted = 4,
721         Noop = 5,
722         Xor = 6,
723         Or = 7,
724         Nor = 8,
725         Equiv = 9,
726         Inverted = 10,
727         OrReverse = 11,
728         CopyInverted = 12,
729         OrInverted = 13,
730         Nand = 14,
731         Set = 15,
732     }
733 
734     #[repr(u32)]
735     pub enum TextureFilter {
736         Nearest = 0,
737         Linear = 1,
738         NearestMipmapNearest = 4,
739         LinearMipmapNearest = 5,
740         NearestMipmapLinear = 6,
741         LinearMipmapLinear = 7,
742     }
743 
744     #[repr(u32)]
745     pub enum TextureMapMode {
746         TextureCoords = 0,
747         TextureMatrix = 1,
748         EnvironmentMap = 2,
749     }
750 
751     #[repr(u32)]
752     pub enum TextureLevelMode {
753         Auto = 0,
754         Const = 1,
755         Slope = 2,
756     }
757 
758     #[repr(u32)]
759     pub enum TextureProjectionMapMode {
760         Position = 0,
761         Uv = 1,
762         NormalizedNormal = 2,
763         Normal = 3,
764     }
765 
766     #[repr(u32)]
767     pub enum GuTexWrapMode {
768         Repeat = 0,
769         Clamp = 1,
770     }
771 
772     #[repr(u32)]
773     pub enum FrontFaceDirection {
774         Clockwise = 0,
775         CounterClockwise = 1,
776     }
777 
778     #[repr(u32)]
779     pub enum AlphaFunc {
780         Never = 0,
781         Always,
782         Equal,
783         NotEqual,
784         Less,
785         LessOrEqual,
786         Greater,
787         GreaterOrEqual,
788     }
789 
790     #[repr(u32)]
791     pub enum StencilFunc {
792         Never = 0,
793         Always,
794         Equal,
795         NotEqual,
796         Less,
797         LessOrEqual,
798         Greater,
799         GreaterOrEqual,
800     }
801 
802     #[repr(u32)]
803     pub enum ColorFunc {
804         Never = 0,
805         Always,
806         Equal,
807         NotEqual,
808     }
809 
810     #[repr(u32)]
811     pub enum DepthFunc {
812         Never = 0,
813         Always,
814         Equal,
815         NotEqual,
816         Less,
817         LessOrEqual,
818         Greater,
819         GreaterOrEqual,
820     }
821 
822     #[repr(u32)]
823     pub enum TextureEffect {
824         Modulate = 0,
825         Decal = 1,
826         Blend = 2,
827         Replace = 3,
828         Add = 4,
829     }
830 
831     #[repr(u32)]
832     pub enum TextureColorComponent {
833         Rgb = 0,
834         Rgba = 1,
835     }
836 
837     #[repr(u32)]
838     pub enum MipmapLevel {
839         None = 0,
840         Level1,
841         Level2,
842         Level3,
843         Level4,
844         Level5,
845         Level6,
846         Level7,
847     }
848 
849     #[repr(u32)]
850     pub enum BlendOp {
851         Add = 0,
852         Subtract = 1,
853         ReverseSubtract = 2,
854         Min = 3,
855         Max = 4,
856         Abs = 5,
857     }
858 
859     #[repr(u32)]
860     pub enum BlendSrc {
861         SrcColor = 0,
862         OneMinusSrcColor = 1,
863         SrcAlpha = 2,
864         OneMinusSrcAlpha = 3,
865         Fix = 10,
866     }
867 
868     #[repr(u32)]
869     pub enum BlendDst {
870         DstColor = 0,
871         OneMinusDstColor = 1,
872         DstAlpha = 4,
873         OneMinusDstAlpha = 5,
874         Fix = 10,
875     }
876 
877     #[repr(u32)]
878     pub enum StencilOperation {
879         Keep = 0,
880         Zero = 1,
881         Replace = 2,
882         Invert = 3,
883         Incr = 4,
884         Decr = 5,
885     }
886 
887     #[repr(u32)]
888     pub enum LightMode {
889         SingleColor = 0,
890         SeparateSpecularColor = 1,
891     }
892 
893     #[repr(u32)]
894     pub enum LightType {
895         Directional = 0,
896         Pointlight = 1,
897         Spotlight = 2,
898     }
899 
900     #[repr(u32)]
901     pub enum GuContextType {
902         Direct = 0,
903         Call = 1,
904         Send = 2,
905     }
906 
907     #[repr(u32)]
908     pub enum GuQueueMode {
909         Tail = 0,
910         Head = 1,
911     }
912 
913     #[repr(u32)]
914     pub enum GuSyncMode {
915         Finish = 0,
916         Signal = 1,
917         Done = 2,
918         List = 3,
919         Send = 4,
920     }
921 
922     #[repr(u32)]
923     pub enum GuSyncBehavior {
924         Wait = 0,
925         NoWait = 1,
926     }
927 
928     #[repr(u32)]
929     pub enum GuCallbackId {
930         Signal = 1,
931         Finish = 4,
932     }
933 
934     #[repr(u32)]
935     pub enum SignalBehavior {
936         Suspend = 1,
937         Continue = 2,
938     }
939 
940     #[repr(u32)]
941     pub enum ClutPixelFormat {
942         Psm5650 = 0,
943         Psm5551 = 1,
944         Psm4444 = 2,
945         Psm8888 = 3,
946     }
947 
948     #[repr(C)]
949     pub enum KeyType {
950         Directory = 1,
951         Integer = 2,
952         String = 3,
953         Bytes = 4,
954     }
955 
956     #[repr(u32)]
957     pub enum UtilityMsgDialogMode {
958         Error,
959         Text,
960     }
961 
962     #[repr(u32)]
963     pub enum UtilityMsgDialogPressed {
964         Unknown1,
965         Yes,
966         No,
967         Back,
968     }
969 
970     #[repr(u32)]
971     pub enum UtilityDialogButtonAccept {
972         Circle,
973         Cross,
974     }
975 
976     #[repr(u32)]
977     pub enum SceUtilityOskInputLanguage {
978         Default,
979         Japanese,
980         English,
981         French,
982         Spanish,
983         German,
984         Italian,
985         Dutch,
986         Portugese,
987         Russian,
988         Korean,
989     }
990 
991     #[repr(u32)]
992     pub enum SceUtilityOskInputType {
993         All,
994         LatinDigit,
995         LatinSymbol,
996         LatinLowercase = 4,
997         LatinUppercase = 8,
998         JapaneseDigit = 0x100,
999         JapaneseSymbol = 0x200,
1000         JapaneseLowercase = 0x400,
1001         JapaneseUppercase = 0x800,
1002         JapaneseHiragana = 0x1000,
1003         JapaneseHalfWidthKatakana = 0x2000,
1004         JapaneseKatakana = 0x4000,
1005         JapaneseKanji = 0x8000,
1006         RussianLowercase = 0x10000,
1007         RussianUppercase = 0x20000,
1008         Korean = 0x40000,
1009         Url = 0x80000,
1010     }
1011 
1012     #[repr(u32)]
1013     pub enum SceUtilityOskState {
1014         None,
1015         Initializing,
1016         Initialized,
1017         Visible,
1018         Quit,
1019         Finished,
1020     }
1021 
1022     #[repr(u32)]
1023     pub enum SceUtilityOskResult {
1024         Unchanged,
1025         Cancelled,
1026         Changed,
1027     }
1028 
1029     #[repr(u32)]
1030     pub enum SystemParamLanguage {
1031         Japanese,
1032         English,
1033         French,
1034         Spanish,
1035         German,
1036         Italian,
1037         Dutch,
1038         Portugese,
1039         Russian,
1040         Korean,
1041         ChineseTraditional,
1042         ChineseSimplified,
1043     }
1044 
1045     #[repr(u32)]
1046     pub enum SystemParamId {
1047         StringNickname = 1,
1048         AdhocChannel,
1049         WlanPowerSave,
1050         DateFormat,
1051         TimeFormat,
1052         Timezone,
1053         DaylightSavings,
1054         Language,
1055         Unknown,
1056     }
1057 
1058     #[repr(u32)]
1059     pub enum SystemParamAdhocChannel {
1060         ChannelAutomatic = 0,
1061         Channel1 = 1,
1062         Channel6 = 6,
1063         Channel11 = 11,
1064     }
1065 
1066     #[repr(u32)]
1067     pub enum SystemParamWlanPowerSaveState {
1068         Off,
1069         On,
1070     }
1071 
1072     #[repr(u32)]
1073     pub enum SystemParamDateFormat {
1074         YYYYMMDD,
1075         MMDDYYYY,
1076         DDMMYYYY,
1077     }
1078 
1079     #[repr(u32)]
1080     pub enum SystemParamTimeFormat {
1081         Hour24,
1082         Hour12,
1083     }
1084 
1085     #[repr(u32)]
1086     pub enum SystemParamDaylightSavings {
1087         Std,
1088         Dst,
1089     }
1090 
1091     #[repr(u32)]
1092     pub enum AvModule {
1093         AvCodec,
1094         SasCore,
1095         Atrac3Plus,
1096         MpegBase,
1097         Mp3,
1098         Vaudio,
1099         Aac,
1100         G729,
1101     }
1102 
1103     #[repr(u32)]
1104     pub enum Module {
1105         NetCommon = 0x100,
1106         NetAdhoc,
1107         NetInet,
1108         NetParseUri,
1109         NetHttp,
1110         NetSsl,
1111 
1112         UsbPspCm = 0x200,
1113         UsbMic,
1114         UsbCam,
1115         UsbGps,
1116 
1117         AvCodec = 0x300,
1118         AvSascore,
1119         AvAtrac3Plus,
1120         AvMpegBase,
1121         AvMp3,
1122         AvVaudio,
1123         AvAac,
1124         AvG729,
1125 
1126         NpCommon = 0x400,
1127         NpService,
1128         NpMatching2,
1129         NpDrm = 0x500,
1130 
1131         Irda = 0x600,
1132     }
1133 
1134     #[repr(u32)]
1135     pub enum NetModule {
1136         NetCommon = 1,
1137         NetAdhoc,
1138         NetInet,
1139         NetParseUri,
1140         NetHttp,
1141         NetSsl,
1142     }
1143 
1144     #[repr(u32)]
1145     pub enum UsbModule {
1146         UsbPspCm = 1,
1147         UsbAcc,
1148         UsbMic,
1149         UsbCam,
1150         UsbGps,
1151     }
1152 
1153     #[repr(u32)]
1154     pub enum NetParam {
1155         Name,
1156         Ssid,
1157         Secure,
1158         WepKey,
1159         IsStaticIp,
1160         Ip,
1161         NetMask,
1162         Route,
1163         ManualDns,
1164         PrimaryDns,
1165         SecondaryDns,
1166         ProxyUser,
1167         ProxyPass,
1168         UseProxy,
1169         ProxyServer,
1170         ProxyPort,
1171         Unknown1,
1172         Unknown2,
1173     }
1174 
1175     #[repr(u32)]
1176     pub enum UtilityNetconfAction {
1177         ConnectAP,
1178         DisplayStatus,
1179         ConnectAdhoc,
1180     }
1181 
1182     #[repr(u32)]
1183     pub enum UtilitySavedataMode {
1184         AutoLoad,
1185         AutoSave,
1186         Load,
1187         Save,
1188         ListLoad,
1189         ListSave,
1190         ListDelete,
1191         Delete,
1192     }
1193 
1194     #[repr(u32)]
1195     pub enum UtilitySavedataFocus {
1196         Unknown1,
1197         FirstList,
1198         LastList,
1199         Latest,
1200         Oldest,
1201         Unknown2,
1202         Unknown3,
1203         FirstEmpty,
1204         LastEmpty,
1205     }
1206 
1207     #[repr(u32)]
1208     pub enum UtilityGameSharingMode {
1209         Single = 1,
1210         Multiple,
1211     }
1212 
1213     #[repr(u32)]
1214     pub enum UtilityGameSharingDataType {
1215         File = 1,
1216         Memory,
1217     }
1218 
1219     #[repr(u32)]
1220     pub enum UtilityHtmlViewerInterfaceMode {
1221         Full,
1222         Limited,
1223         None,
1224     }
1225 
1226     #[repr(u32)]
1227     pub enum UtilityHtmlViewerCookieMode {
1228         Disabled = 0,
1229         Enabled,
1230         Confirm,
1231         Default,
1232     }
1233 
1234     #[repr(u32)]
1235     pub enum UtilityHtmlViewerTextSize {
1236         Large,
1237         Normal,
1238         Small,
1239     }
1240 
1241     #[repr(u32)]
1242     pub enum UtilityHtmlViewerDisplayMode {
1243         Normal,
1244         Fit,
1245         SmartFit,
1246     }
1247 
1248     #[repr(u32)]
1249     pub enum UtilityHtmlViewerConnectMode {
1250         Last,
1251         ManualOnce,
1252         ManualAll,
1253     }
1254 
1255     #[repr(u32)]
1256     pub enum UtilityHtmlViewerDisconnectMode {
1257         Enable,
1258         Disable,
1259         Confirm,
1260     }
1261 
1262     #[repr(u32)]
1263     pub enum ScePspnetAdhocPtpState {
1264         Closed,
1265         Listen,
1266         SynSent,
1267         SynReceived,
1268         Established,
1269     }
1270 
1271     #[repr(u32)]
1272     pub enum AdhocMatchingMode {
1273         Host = 1,
1274         Client,
1275         Ptp,
1276     }
1277 
1278     #[repr(u32)]
1279     pub enum ApctlState {
1280         Disconnected,
1281         Scanning,
1282         Joining,
1283         GettingIp,
1284         GotIp,
1285         EapAuth,
1286         KeyExchange,
1287     }
1288 
1289     #[repr(u32)]
1290     pub enum ApctlEvent {
1291         ConnectRequest,
1292         ScanRequest,
1293         ScanComplete,
1294         Established,
1295         GetIp,
1296         DisconnectRequest,
1297         Error,
1298         Info,
1299         EapAuth,
1300         KeyExchange,
1301         Reconnect,
1302     }
1303 
1304     #[repr(u32)]
1305     pub enum ApctlInfo {
1306         ProfileName,
1307         Bssid,
1308         Ssid,
1309         SsidLength,
1310         SecurityType,
1311         Strength,
1312         Channel,
1313         PowerSave,
1314         Ip,
1315         SubnetMask,
1316         Gateway,
1317         PrimaryDns,
1318         SecondaryDns,
1319         UseProxy,
1320         ProxyUrl,
1321         ProxyPort,
1322         EapType,
1323         StartBrowser,
1324         Wifisp,
1325     }
1326 
1327     #[repr(u32)]
1328     pub enum ApctlInfoSecurityType {
1329         None,
1330         Wep,
1331         Wpa,
1332     }
1333 
1334     #[repr(u32)]
1335     pub enum HttpMethod {
1336         Get,
1337         Post,
1338         Head,
1339     }
1340 
1341     #[repr(u32)]
1342     pub enum HttpAuthType {
1343         Basic,
1344         Digest,
1345     }
1346 }
1347 
1348 s_paren! {
1349     #[repr(transparent)]
1350     pub struct SceUid(pub i32);
1351 
1352     #[repr(transparent)]
1353     #[allow(dead_code)]
1354     pub struct SceMpeg(*mut *mut c_void);
1355 
1356     #[repr(transparent)]
1357     #[allow(dead_code)]
1358     pub struct SceMpegStream(*mut c_void);
1359 
1360     #[repr(transparent)]
1361     pub struct Mp3Handle(pub i32);
1362 
1363     #[repr(transparent)]
1364     #[allow(dead_code)]
1365     pub struct RegHandle(u32);
1366 }
1367 
1368 s! {
1369     pub struct sockaddr {
1370         pub sa_len: u8,
1371         pub sa_family: u8,
1372         pub sa_data: [u8; 14],
1373     }
1374 
1375     pub struct in_addr {
1376         pub s_addr: u32,
1377     }
1378 
1379     pub struct AudioInputParams {
1380         pub unknown1: i32,
1381         pub gain: i32,
1382         pub unknown2: i32,
1383         pub unknown3: i32,
1384         pub unknown4: i32,
1385         pub unknown5: i32,
1386     }
1387 
1388     pub struct Atrac3BufferInfo {
1389         pub puc_write_position_first_buf: *mut u8,
1390         pub ui_writable_byte_first_buf: u32,
1391         pub ui_min_write_byte_first_buf: u32,
1392         pub ui_read_position_first_buf: u32,
1393         pub puc_write_position_second_buf: *mut u8,
1394         pub ui_writable_byte_second_buf: u32,
1395         pub ui_min_write_byte_second_buf: u32,
1396         pub ui_read_position_second_buf: u32,
1397     }
1398 
1399     pub struct SceCtrlData {
1400         pub timestamp: u32,
1401         pub buttons: i32,
1402         pub lx: u8,
1403         pub ly: u8,
1404         pub rsrv: [u8; 6],
1405     }
1406 
1407     pub struct SceCtrlLatch {
1408         pub ui_make: u32,
1409         pub ui_break: u32,
1410         pub ui_press: u32,
1411         pub ui_release: u32,
1412     }
1413 
1414     pub struct GeStack {
1415         pub stack: [u32; 8],
1416     }
1417 
1418     // FIXME(1.0): This should not implement `PartialEq`
1419     #[allow(unpredictable_function_pointer_comparisons)]
1420     pub struct GeCallbackData {
1421         pub signal_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
1422         pub signal_arg: *mut c_void,
1423         pub finish_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
1424         pub finish_arg: *mut c_void,
1425     }
1426 
1427     pub struct GeListArgs {
1428         pub size: u32,
1429         pub context: *mut GeContext,
1430         pub num_stacks: u32,
1431         pub stacks: *mut GeStack,
1432     }
1433 
1434     pub struct GeBreakParam {
1435         pub buf: [u32; 4],
1436     }
1437 
1438     pub struct SceKernelLoadExecParam {
1439         pub size: usize,
1440         pub args: usize,
1441         pub argp: *mut c_void,
1442         pub key: *const u8,
1443     }
1444 
1445     pub struct timeval {
1446         pub tv_sec: i32,
1447         pub tv_usec: i32,
1448     }
1449 
1450     pub struct timezone {
1451         pub tz_minutes_west: i32,
1452         pub tz_dst_time: i32,
1453     }
1454 
1455     pub struct IntrHandlerOptionParam {
1456         size: i32,
1457         entry: u32,
1458         common: u32,
1459         gp: u32,
1460         intr_code: u16,
1461         sub_count: u16,
1462         intr_level: u16,
1463         enabled: u16,
1464         calls: u32,
1465         field_1c: u32,
1466         total_clock_lo: u32,
1467         total_clock_hi: u32,
1468         min_clock_lo: u32,
1469         min_clock_hi: u32,
1470         max_clock_lo: u32,
1471         max_clock_hi: u32,
1472     }
1473 
1474     pub struct SceKernelLMOption {
1475         pub size: usize,
1476         pub m_pid_text: SceUid,
1477         pub m_pid_data: SceUid,
1478         pub flags: u32,
1479         pub position: u8,
1480         pub access: u8,
1481         pub c_reserved: [u8; 2usize],
1482     }
1483 
1484     pub struct SceKernelSMOption {
1485         pub size: usize,
1486         pub m_pid_stack: SceUid,
1487         pub stack_size: usize,
1488         pub priority: i32,
1489         pub attribute: u32,
1490     }
1491 
1492     pub struct SceKernelModuleInfo {
1493         pub size: usize,
1494         pub n_segment: u8,
1495         pub reserved: [u8; 3usize],
1496         pub segment_addr: [i32; 4usize],
1497         pub segment_size: [i32; 4usize],
1498         pub entry_addr: u32,
1499         pub gp_value: u32,
1500         pub text_addr: u32,
1501         pub text_size: u32,
1502         pub data_size: u32,
1503         pub bss_size: u32,
1504         pub attribute: u16,
1505         pub version: [u8; 2usize],
1506         pub name: [u8; 28usize],
1507     }
1508 
1509     pub struct DebugProfilerRegs {
1510         pub enable: u32,
1511         pub systemck: u32,
1512         pub cpuck: u32,
1513         pub internal: u32,
1514         pub memory: u32,
1515         pub copz: u32,
1516         pub vfpu: u32,
1517         pub sleep: u32,
1518         pub bus_access: u32,
1519         pub uncached_load: u32,
1520         pub uncached_store: u32,
1521         pub cached_load: u32,
1522         pub cached_store: u32,
1523         pub i_miss: u32,
1524         pub d_miss: u32,
1525         pub d_writeback: u32,
1526         pub cop0_inst: u32,
1527         pub fpu_inst: u32,
1528         pub vfpu_inst: u32,
1529         pub local_bus: u32,
1530     }
1531 
1532     pub struct SceKernelSysClock {
1533         pub low: u32,
1534         pub hi: u32,
1535     }
1536 
1537     pub struct SceKernelThreadOptParam {
1538         pub size: usize,
1539         pub stack_mpid: SceUid,
1540     }
1541 
1542     // FIXME(1.0): This should not implement `PartialEq`
1543     #[allow(unpredictable_function_pointer_comparisons)]
1544     pub struct SceKernelThreadInfo {
1545         pub size: usize,
1546         pub name: [u8; 32],
1547         pub attr: u32,
1548         pub status: i32,
1549         pub entry: SceKernelThreadEntry,
1550         pub stack: *mut c_void,
1551         pub stack_size: i32,
1552         pub gp_reg: *mut c_void,
1553         pub init_priority: i32,
1554         pub current_priority: i32,
1555         pub wait_type: i32,
1556         pub wait_id: SceUid,
1557         pub wakeup_count: i32,
1558         pub exit_status: i32,
1559         pub run_clocks: SceKernelSysClock,
1560         pub intr_preempt_count: u32,
1561         pub thread_preempt_count: u32,
1562         pub release_count: u32,
1563     }
1564 
1565     pub struct SceKernelThreadRunStatus {
1566         pub size: usize,
1567         pub status: i32,
1568         pub current_priority: i32,
1569         pub wait_type: i32,
1570         pub wait_id: i32,
1571         pub wakeup_count: i32,
1572         pub run_clocks: SceKernelSysClock,
1573         pub intr_preempt_count: u32,
1574         pub thread_preempt_count: u32,
1575         pub release_count: u32,
1576     }
1577 
1578     pub struct SceKernelSemaOptParam {
1579         pub size: usize,
1580     }
1581 
1582     pub struct SceKernelSemaInfo {
1583         pub size: usize,
1584         pub name: [u8; 32],
1585         pub attr: u32,
1586         pub init_count: i32,
1587         pub current_count: i32,
1588         pub max_count: i32,
1589         pub num_wait_threads: i32,
1590     }
1591 
1592     pub struct SceKernelEventFlagInfo {
1593         pub size: usize,
1594         pub name: [u8; 32],
1595         pub attr: u32,
1596         pub init_pattern: u32,
1597         pub current_pattern: u32,
1598         pub num_wait_threads: i32,
1599     }
1600 
1601     pub struct SceKernelEventFlagOptParam {
1602         pub size: usize,
1603     }
1604 
1605     pub struct SceKernelMbxOptParam {
1606         pub size: usize,
1607     }
1608 
1609     pub struct SceKernelMbxInfo {
1610         pub size: usize,
1611         pub name: [u8; 32usize],
1612         pub attr: u32,
1613         pub num_wait_threads: i32,
1614         pub num_messages: i32,
1615         pub first_message: *mut c_void,
1616     }
1617 
1618     // FIXME(1.0): This should not implement `PartialEq`
1619     #[allow(unpredictable_function_pointer_comparisons)]
1620     pub struct SceKernelVTimerInfo {
1621         pub size: usize,
1622         pub name: [u8; 32],
1623         pub active: i32,
1624         pub base: SceKernelSysClock,
1625         pub current: SceKernelSysClock,
1626         pub schedule: SceKernelSysClock,
1627         pub handler: SceKernelVTimerHandler,
1628         pub common: *mut c_void,
1629     }
1630 
1631     // FIXME(1.0): This should not implement `PartialEq`
1632     #[allow(unpredictable_function_pointer_comparisons)]
1633     pub struct SceKernelThreadEventHandlerInfo {
1634         pub size: usize,
1635         pub name: [u8; 32],
1636         pub thread_id: SceUid,
1637         pub mask: i32,
1638         pub handler: SceKernelThreadEventHandler,
1639         pub common: *mut c_void,
1640     }
1641 
1642     // FIXME(1.0): This should not implement `PartialEq`
1643     #[allow(unpredictable_function_pointer_comparisons)]
1644     pub struct SceKernelAlarmInfo {
1645         pub size: usize,
1646         pub schedule: SceKernelSysClock,
1647         pub handler: SceKernelAlarmHandler,
1648         pub common: *mut c_void,
1649     }
1650 
1651     pub struct SceKernelSystemStatus {
1652         pub size: usize,
1653         pub status: u32,
1654         pub idle_clocks: SceKernelSysClock,
1655         pub comes_out_of_idle_count: u32,
1656         pub thread_switch_count: u32,
1657         pub vfpu_switch_count: u32,
1658     }
1659 
1660     pub struct SceKernelMppInfo {
1661         pub size: usize,
1662         pub name: [u8; 32],
1663         pub attr: u32,
1664         pub buf_size: i32,
1665         pub free_size: i32,
1666         pub num_send_wait_threads: i32,
1667         pub num_receive_wait_threads: i32,
1668     }
1669 
1670     pub struct SceKernelVplOptParam {
1671         pub size: usize,
1672     }
1673 
1674     pub struct SceKernelVplInfo {
1675         pub size: usize,
1676         pub name: [u8; 32],
1677         pub attr: u32,
1678         pub pool_size: i32,
1679         pub free_size: i32,
1680         pub num_wait_threads: i32,
1681     }
1682 
1683     pub struct SceKernelFplOptParam {
1684         pub size: usize,
1685     }
1686 
1687     pub struct SceKernelFplInfo {
1688         pub size: usize,
1689         pub name: [u8; 32usize],
1690         pub attr: u32,
1691         pub block_size: i32,
1692         pub num_blocks: i32,
1693         pub free_blocks: i32,
1694         pub num_wait_threads: i32,
1695     }
1696 
1697     pub struct SceKernelVTimerOptParam {
1698         pub size: usize,
1699     }
1700 
1701     // FIXME(1.0): This should not implement `PartialEq`
1702     #[allow(unpredictable_function_pointer_comparisons)]
1703     pub struct SceKernelCallbackInfo {
1704         pub size: usize,
1705         pub name: [u8; 32usize],
1706         pub thread_id: SceUid,
1707         pub callback: SceKernelCallbackFunction,
1708         pub common: *mut c_void,
1709         pub notify_count: i32,
1710         pub notify_arg: i32,
1711     }
1712 
1713     pub struct UsbCamSetupStillParam {
1714         pub size: i32,
1715         pub resolution: UsbCamResolution,
1716         pub jpeg_size: i32,
1717         pub reverse_flags: i32,
1718         pub delay: UsbCamDelay,
1719         pub comp_level: i32,
1720     }
1721 
1722     pub struct UsbCamSetupStillExParam {
1723         pub size: i32,
1724         pub unk: u32,
1725         pub resolution: UsbCamResolutionEx,
1726         pub jpeg_size: i32,
1727         pub comp_level: i32,
1728         pub unk2: u32,
1729         pub unk3: u32,
1730         pub flip: i32,
1731         pub mirror: i32,
1732         pub delay: UsbCamDelay,
1733         pub unk4: [u32; 5usize],
1734     }
1735 
1736     pub struct UsbCamSetupVideoParam {
1737         pub size: i32,
1738         pub resolution: UsbCamResolution,
1739         pub framerate: UsbCamFrameRate,
1740         pub white_balance: UsbCamWb,
1741         pub saturation: i32,
1742         pub brightness: i32,
1743         pub contrast: i32,
1744         pub sharpness: i32,
1745         pub effect_mode: UsbCamEffectMode,
1746         pub frame_size: i32,
1747         pub unk: u32,
1748         pub evl_evel: UsbCamEvLevel,
1749     }
1750 
1751     pub struct UsbCamSetupVideoExParam {
1752         pub size: i32,
1753         pub unk: u32,
1754         pub resolution: UsbCamResolutionEx,
1755         pub framerate: UsbCamFrameRate,
1756         pub unk2: u32,
1757         pub unk3: u32,
1758         pub white_balance: UsbCamWb,
1759         pub saturation: i32,
1760         pub brightness: i32,
1761         pub contrast: i32,
1762         pub sharpness: i32,
1763         pub unk4: u32,
1764         pub unk5: u32,
1765         pub unk6: [u32; 3usize],
1766         pub effect_mode: UsbCamEffectMode,
1767         pub unk7: u32,
1768         pub unk8: u32,
1769         pub unk9: u32,
1770         pub unk10: u32,
1771         pub unk11: u32,
1772         pub frame_size: i32,
1773         pub unk12: u32,
1774         pub ev_level: UsbCamEvLevel,
1775     }
1776 
1777     pub struct ScePspDateTime {
1778         pub year: u16,
1779         pub month: u16,
1780         pub day: u16,
1781         pub hour: u16,
1782         pub minutes: u16,
1783         pub seconds: u16,
1784         pub microseconds: u32,
1785     }
1786 
1787     pub struct SceIoStat {
1788         pub st_mode: i32,
1789         pub st_attr: i32,
1790         pub st_size: i64,
1791         pub st_ctime: ScePspDateTime,
1792         pub st_atime: ScePspDateTime,
1793         pub st_mtime: ScePspDateTime,
1794         pub st_private: [u32; 6usize],
1795     }
1796 
1797     pub struct UmdInfo {
1798         pub size: u32,
1799         pub type_: UmdType,
1800     }
1801 
1802     // FIXME(1.0): This should not implement `PartialEq`
1803     #[allow(unpredictable_function_pointer_comparisons)]
1804     pub struct SceMpegRingbuffer {
1805         pub packets: i32,
1806         pub unk0: u32,
1807         pub unk1: u32,
1808         pub unk2: u32,
1809         pub unk3: u32,
1810         pub data: *mut c_void,
1811         pub callback: SceMpegRingbufferCb,
1812         pub cb_param: *mut c_void,
1813         pub unk4: u32,
1814         pub unk5: u32,
1815         pub sce_mpeg: *mut c_void,
1816     }
1817 
1818     pub struct SceMpegAu {
1819         pub pts_msb: u32,
1820         pub pts: u32,
1821         pub dts_msb: u32,
1822         pub dts: u32,
1823         pub es_buffer: u32,
1824         pub au_size: u32,
1825     }
1826 
1827     pub struct SceMpegAvcMode {
1828         pub unk0: i32,
1829         pub pixel_format: super::DisplayPixelFormat,
1830     }
1831 
1832     #[repr(align(64))]
1833     pub struct SceMpegLLI {
1834         pub src: *mut c_void,
1835         pub dst: *mut c_void,
1836         pub next: *mut c_void,
1837         pub size: i32,
1838     }
1839 
1840     #[repr(align(64))]
1841     pub struct SceMpegYCrCbBuffer {
1842         pub frame_buffer_height16: i32,
1843         pub frame_buffer_width16: i32,
1844         pub unknown: i32,
1845         pub unknown2: i32,
1846         pub y_buffer: *mut c_void,
1847         pub y_buffer2: *mut c_void,
1848         pub cr_buffer: *mut c_void,
1849         pub cb_buffer: *mut c_void,
1850         pub cr_buffer2: *mut c_void,
1851         pub cb_buffer2: *mut c_void,
1852 
1853         pub frame_height: i32,
1854         pub frame_width: i32,
1855         pub frame_buffer_width: i32,
1856         pub unknown3: [i32; 11usize],
1857     }
1858 
1859     pub struct ScePspSRect {
1860         pub x: i16,
1861         pub y: i16,
1862         pub w: i16,
1863         pub h: i16,
1864     }
1865 
1866     pub struct ScePspIRect {
1867         pub x: i32,
1868         pub y: i32,
1869         pub w: i32,
1870         pub h: i32,
1871     }
1872 
1873     pub struct ScePspL64Rect {
1874         pub x: u64,
1875         pub y: u64,
1876         pub w: u64,
1877         pub h: u64,
1878     }
1879 
1880     pub struct ScePspSVector2 {
1881         pub x: i16,
1882         pub y: i16,
1883     }
1884 
1885     pub struct ScePspIVector2 {
1886         pub x: i32,
1887         pub y: i32,
1888     }
1889 
1890     pub struct ScePspL64Vector2 {
1891         pub x: u64,
1892         pub y: u64,
1893     }
1894 
1895     pub struct ScePspSVector3 {
1896         pub x: i16,
1897         pub y: i16,
1898         pub z: i16,
1899     }
1900 
1901     pub struct ScePspIVector3 {
1902         pub x: i32,
1903         pub y: i32,
1904         pub z: i32,
1905     }
1906 
1907     pub struct ScePspL64Vector3 {
1908         pub x: u64,
1909         pub y: u64,
1910         pub z: u64,
1911     }
1912 
1913     pub struct ScePspSVector4 {
1914         pub x: i16,
1915         pub y: i16,
1916         pub z: i16,
1917         pub w: i16,
1918     }
1919 
1920     pub struct ScePspIVector4 {
1921         pub x: i32,
1922         pub y: i32,
1923         pub z: i32,
1924         pub w: i32,
1925     }
1926 
1927     pub struct ScePspL64Vector4 {
1928         pub x: u64,
1929         pub y: u64,
1930         pub z: u64,
1931         pub w: u64,
1932     }
1933 
1934     pub struct ScePspIMatrix2 {
1935         pub x: ScePspIVector2,
1936         pub y: ScePspIVector2,
1937     }
1938 
1939     pub struct ScePspIMatrix3 {
1940         pub x: ScePspIVector3,
1941         pub y: ScePspIVector3,
1942         pub z: ScePspIVector3,
1943     }
1944 
1945     #[repr(align(16))]
1946     pub struct ScePspIMatrix4 {
1947         pub x: ScePspIVector4,
1948         pub y: ScePspIVector4,
1949         pub z: ScePspIVector4,
1950         pub w: ScePspIVector4,
1951     }
1952 
1953     pub struct ScePspIMatrix4Unaligned {
1954         pub x: ScePspIVector4,
1955         pub y: ScePspIVector4,
1956         pub z: ScePspIVector4,
1957         pub w: ScePspIVector4,
1958     }
1959 
1960     pub struct SceMp3InitArg {
1961         pub mp3_stream_start: u32,
1962         pub unk1: u32,
1963         pub mp3_stream_end: u32,
1964         pub unk2: u32,
1965         pub mp3_buf: *mut c_void,
1966         pub mp3_buf_size: i32,
1967         pub pcm_buf: *mut c_void,
1968         pub pcm_buf_size: i32,
1969     }
1970 
1971     pub struct OpenPSID {
1972         pub data: [u8; 16usize],
1973     }
1974 
1975     pub struct UtilityDialogCommon {
1976         pub size: u32,
1977         pub language: SystemParamLanguage,
1978         pub button_accept: UtilityDialogButtonAccept,
1979         pub graphics_thread: i32,
1980         pub access_thread: i32,
1981         pub font_thread: i32,
1982         pub sound_thread: i32,
1983         pub result: i32,
1984         pub reserved: [i32; 4usize],
1985     }
1986 
1987     pub struct UtilityNetconfAdhoc {
1988         pub name: [u8; 8usize],
1989         pub timeout: u32,
1990     }
1991 
1992     pub struct UtilityNetconfData {
1993         pub base: UtilityDialogCommon,
1994         pub action: UtilityNetconfAction,
1995         pub adhocparam: *mut UtilityNetconfAdhoc,
1996         pub hotspot: i32,
1997         pub hotspot_connected: i32,
1998         pub wifisp: i32,
1999     }
2000 
2001     pub struct UtilitySavedataFileData {
2002         pub buf: *mut c_void,
2003         pub buf_size: usize,
2004         pub size: usize,
2005         pub unknown: i32,
2006     }
2007 
2008     pub struct UtilitySavedataListSaveNewData {
2009         pub icon0: UtilitySavedataFileData,
2010         pub title: *mut u8,
2011     }
2012 
2013     pub struct UtilityGameSharingParams {
2014         pub base: UtilityDialogCommon,
2015         pub unknown1: i32,
2016         pub unknown2: i32,
2017         pub name: [u8; 8usize],
2018         pub unknown3: i32,
2019         pub unknown4: i32,
2020         pub unknown5: i32,
2021         pub result: i32,
2022         pub filepath: *mut u8,
2023         pub mode: UtilityGameSharingMode,
2024         pub datatype: UtilityGameSharingDataType,
2025         pub data: *mut c_void,
2026         pub datasize: u32,
2027     }
2028 
2029     pub struct UtilityHtmlViewerParam {
2030         pub base: UtilityDialogCommon,
2031         pub memaddr: *mut c_void,
2032         pub memsize: u32,
2033         pub unknown1: i32,
2034         pub unknown2: i32,
2035         pub initialurl: *mut u8,
2036         pub numtabs: u32,
2037         pub interfacemode: UtilityHtmlViewerInterfaceMode,
2038         pub options: i32,
2039         pub dldirname: *mut u8,
2040         pub dlfilename: *mut u8,
2041         pub uldirname: *mut u8,
2042         pub ulfilename: *mut u8,
2043         pub cookiemode: UtilityHtmlViewerCookieMode,
2044         pub unknown3: u32,
2045         pub homeurl: *mut u8,
2046         pub textsize: UtilityHtmlViewerTextSize,
2047         pub displaymode: UtilityHtmlViewerDisplayMode,
2048         pub connectmode: UtilityHtmlViewerConnectMode,
2049         pub disconnectmode: UtilityHtmlViewerDisconnectMode,
2050         pub memused: u32,
2051         pub unknown4: [i32; 10usize],
2052     }
2053 
2054     pub struct SceUtilityOskData {
2055         pub unk_00: i32,
2056         pub unk_04: i32,
2057         pub language: SceUtilityOskInputLanguage,
2058         pub unk_12: i32,
2059         pub inputtype: SceUtilityOskInputType,
2060         pub lines: i32,
2061         pub unk_24: i32,
2062         pub desc: *mut u16,
2063         pub intext: *mut u16,
2064         pub outtextlength: i32,
2065         pub outtext: *mut u16,
2066         pub result: SceUtilityOskResult,
2067         pub outtextlimit: i32,
2068     }
2069 
2070     pub struct SceUtilityOskParams {
2071         pub base: UtilityDialogCommon,
2072         pub datacount: i32,
2073         pub data: *mut SceUtilityOskData,
2074         pub state: SceUtilityOskState,
2075         pub unk_60: i32,
2076     }
2077 
2078     pub struct SceNetMallocStat {
2079         pub pool: i32,
2080         pub maximum: i32,
2081         pub free: i32,
2082     }
2083 
2084     pub struct SceNetAdhocctlAdhocId {
2085         pub unknown: i32,
2086         pub adhoc_id: [u8; 9usize],
2087         pub unk: [u8; 3usize],
2088     }
2089 
2090     pub struct SceNetAdhocctlScanInfo {
2091         pub next: *mut SceNetAdhocctlScanInfo,
2092         pub channel: i32,
2093         pub name: [u8; 8usize],
2094         pub bssid: [u8; 6usize],
2095         pub unknown: [u8; 2usize],
2096         pub unknown2: i32,
2097     }
2098 
2099     pub struct SceNetAdhocctlGameModeInfo {
2100         pub count: i32,
2101         pub macs: [[u8; 6usize]; 16usize],
2102     }
2103 
2104     pub struct SceNetAdhocPtpStat {
2105         pub next: *mut SceNetAdhocPtpStat,
2106         pub ptp_id: i32,
2107         pub mac: [u8; 6usize],
2108         pub peermac: [u8; 6usize],
2109         pub port: u16,
2110         pub peerport: u16,
2111         pub sent_data: u32,
2112         pub rcvd_data: u32,
2113         pub state: ScePspnetAdhocPtpState,
2114     }
2115 
2116     pub struct SceNetAdhocPdpStat {
2117         pub next: *mut SceNetAdhocPdpStat,
2118         pub pdp_id: i32,
2119         pub mac: [u8; 6usize],
2120         pub port: u16,
2121         pub rcvd_data: u32,
2122     }
2123 
2124     pub struct AdhocPoolStat {
2125         pub size: i32,
2126         pub maxsize: i32,
2127         pub freesize: i32,
2128     }
2129 }
2130 
2131 s_no_extra_traits! {
2132     pub struct GeContext {
2133         pub context: [u32; 512],
2134     }
2135 
2136     pub struct SceKernelUtilsSha1Context {
2137         pub h: [u32; 5usize],
2138         pub us_remains: u16,
2139         pub us_computed: u16,
2140         pub ull_total_len: u64,
2141         pub buf: [u8; 64usize],
2142     }
2143 
2144     pub struct SceKernelUtilsMt19937Context {
2145         pub count: u32,
2146         pub state: [u32; 624usize],
2147     }
2148 
2149     pub struct SceKernelUtilsMd5Context {
2150         pub h: [u32; 4usize],
2151         pub pad: u32,
2152         pub us_remains: u16,
2153         pub us_computed: u16,
2154         pub ull_total_len: u64,
2155         pub buf: [u8; 64usize],
2156     }
2157 
2158     pub struct SceIoDirent {
2159         pub d_stat: SceIoStat,
2160         pub d_name: [u8; 256usize],
2161         pub d_private: *mut c_void,
2162         pub dummy: i32,
2163     }
2164 
2165     pub struct ScePspFRect {
2166         pub x: f32,
2167         pub y: f32,
2168         pub w: f32,
2169         pub h: f32,
2170     }
2171 
2172     #[repr(align(16))]
2173     pub struct ScePspFVector3 {
2174         pub x: f32,
2175         pub y: f32,
2176         pub z: f32,
2177     }
2178 
2179     #[repr(align(16))]
2180     pub struct ScePspFVector4 {
2181         pub x: f32,
2182         pub y: f32,
2183         pub z: f32,
2184         pub w: f32,
2185     }
2186 
2187     pub struct ScePspFVector4Unaligned {
2188         pub x: f32,
2189         pub y: f32,
2190         pub z: f32,
2191         pub w: f32,
2192     }
2193 
2194     pub struct ScePspFVector2 {
2195         pub x: f32,
2196         pub y: f32,
2197     }
2198 
2199     pub struct ScePspFMatrix2 {
2200         pub x: ScePspFVector2,
2201         pub y: ScePspFVector2,
2202     }
2203 
2204     pub struct ScePspFMatrix3 {
2205         pub x: ScePspFVector3,
2206         pub y: ScePspFVector3,
2207         pub z: ScePspFVector3,
2208     }
2209 
2210     #[repr(align(16))]
2211     pub struct ScePspFMatrix4 {
2212         pub x: ScePspFVector4,
2213         pub y: ScePspFVector4,
2214         pub z: ScePspFVector4,
2215         pub w: ScePspFVector4,
2216     }
2217 
2218     pub struct ScePspFMatrix4Unaligned {
2219         pub x: ScePspFVector4,
2220         pub y: ScePspFVector4,
2221         pub z: ScePspFVector4,
2222         pub w: ScePspFVector4,
2223     }
2224 
2225     pub union ScePspVector3 {
2226         pub fv: ScePspFVector3,
2227         pub iv: ScePspIVector3,
2228         pub f: [f32; 3usize],
2229         pub i: [i32; 3usize],
2230     }
2231 
2232     pub union ScePspVector4 {
2233         pub fv: ScePspFVector4,
2234         pub iv: ScePspIVector4,
2235         pub qw: u128,
2236         pub f: [f32; 4usize],
2237         pub i: [i32; 4usize],
2238     }
2239 
2240     pub union ScePspMatrix2 {
2241         pub fm: ScePspFMatrix2,
2242         pub im: ScePspIMatrix2,
2243         pub fv: [ScePspFVector2; 2usize],
2244         pub iv: [ScePspIVector2; 2usize],
2245         pub v: [ScePspVector2; 2usize],
2246         pub f: [[f32; 2usize]; 2usize],
2247         pub i: [[i32; 2usize]; 2usize],
2248     }
2249 
2250     pub union ScePspMatrix3 {
2251         pub fm: ScePspFMatrix3,
2252         pub im: ScePspIMatrix3,
2253         pub fv: [ScePspFVector3; 3usize],
2254         pub iv: [ScePspIVector3; 3usize],
2255         pub v: [ScePspVector3; 3usize],
2256         pub f: [[f32; 3usize]; 3usize],
2257         pub i: [[i32; 3usize]; 3usize],
2258     }
2259 
2260     pub union ScePspVector2 {
2261         pub fv: ScePspFVector2,
2262         pub iv: ScePspIVector2,
2263         pub f: [f32; 2usize],
2264         pub i: [i32; 2usize],
2265     }
2266 
2267     pub union ScePspMatrix4 {
2268         pub fm: ScePspFMatrix4,
2269         pub im: ScePspIMatrix4,
2270         pub fv: [ScePspFVector4; 4usize],
2271         pub iv: [ScePspIVector4; 4usize],
2272         pub v: [ScePspVector4; 4usize],
2273         pub f: [[f32; 4usize]; 4usize],
2274         pub i: [[i32; 4usize]; 4usize],
2275     }
2276 
2277     pub struct Key {
2278         pub key_type: KeyType,
2279         pub name: [u8; 256usize],
2280         pub name_len: u32,
2281         pub unk2: u32,
2282         pub unk3: u32,
2283     }
2284 
2285     pub struct UtilityMsgDialogParams {
2286         pub base: UtilityDialogCommon,
2287         pub unknown: i32,
2288         pub mode: UtilityMsgDialogMode,
2289         pub error_value: u32,
2290         pub message: [u8; 512usize],
2291         pub options: i32,
2292         pub button_pressed: UtilityMsgDialogPressed,
2293     }
2294 
2295     pub union UtilityNetData {
2296         pub as_uint: u32,
2297         pub as_string: [u8; 128usize],
2298     }
2299 
2300     pub struct UtilitySavedataSFOParam {
2301         pub title: [u8; 128usize],
2302         pub savedata_title: [u8; 128usize],
2303         pub detail: [u8; 1024usize],
2304         pub parental_level: u8,
2305         pub unknown: [u8; 3usize],
2306     }
2307 
2308     pub struct SceUtilitySavedataParam {
2309         pub base: UtilityDialogCommon,
2310         pub mode: UtilitySavedataMode,
2311         pub unknown1: i32,
2312         pub overwrite: i32,
2313         pub game_name: [u8; 13usize],
2314         pub reserved: [u8; 3usize],
2315         pub save_name: [u8; 20usize],
2316         pub save_name_list: *mut [u8; 20usize],
2317         pub file_name: [u8; 13usize],
2318         pub reserved1: [u8; 3usize],
2319         pub data_buf: *mut c_void,
2320         pub data_buf_size: usize,
2321         pub data_size: usize,
2322         pub sfo_param: UtilitySavedataSFOParam,
2323         pub icon0_file_data: UtilitySavedataFileData,
2324         pub icon1_file_data: UtilitySavedataFileData,
2325         pub pic1_file_data: UtilitySavedataFileData,
2326         pub snd0_file_data: UtilitySavedataFileData,
2327         pub new_data: *mut UtilitySavedataListSaveNewData,
2328         pub focus: UtilitySavedataFocus,
2329         pub unknown2: [i32; 4usize],
2330         pub key: [u8; 16],
2331         pub unknown3: [u8; 20],
2332     }
2333 
2334     pub struct SceNetAdhocctlPeerInfo {
2335         pub next: *mut SceNetAdhocctlPeerInfo,
2336         pub nickname: [u8; 128usize],
2337         pub mac: [u8; 6usize],
2338         pub unknown: [u8; 6usize],
2339         pub timestamp: u32,
2340     }
2341 
2342     pub struct SceNetAdhocctlParams {
2343         pub channel: i32,
2344         pub name: [u8; 8usize],
2345         pub bssid: [u8; 6usize],
2346         pub nickname: [u8; 128usize],
2347     }
2348 
2349     pub union SceNetApctlInfo {
2350         pub name: [u8; 64usize],
2351         pub bssid: [u8; 6usize],
2352         pub ssid: [u8; 32usize],
2353         pub ssid_length: u32,
2354         pub security_type: u32,
2355         pub strength: u8,
2356         pub channel: u8,
2357         pub power_save: u8,
2358         pub ip: [u8; 16usize],
2359         pub sub_net_mask: [u8; 16usize],
2360         pub gateway: [u8; 16usize],
2361         pub primary_dns: [u8; 16usize],
2362         pub secondary_dns: [u8; 16usize],
2363         pub use_proxy: u32,
2364         pub proxy_url: [u8; 128usize],
2365         pub proxy_port: u16,
2366         pub eap_type: u32,
2367         pub start_browser: u32,
2368         pub wifisp: u32,
2369     }
2370 }
2371 
2372 pub const INT_MIN: c_int = -2147483648;
2373 pub const INT_MAX: c_int = 2147483647;
2374 
2375 pub const AUDIO_VOLUME_MAX: u32 = 0x8000;
2376 pub const AUDIO_CHANNEL_MAX: u32 = 8;
2377 pub const AUDIO_NEXT_CHANNEL: i32 = -1;
2378 pub const AUDIO_SAMPLE_MIN: u32 = 64;
2379 pub const AUDIO_SAMPLE_MAX: u32 = 65472;
2380 
2381 pub const PSP_CTRL_SELECT: i32 = 0x000001;
2382 pub const PSP_CTRL_START: i32 = 0x000008;
2383 pub const PSP_CTRL_UP: i32 = 0x000010;
2384 pub const PSP_CTRL_RIGHT: i32 = 0x000020;
2385 pub const PSP_CTRL_DOWN: i32 = 0x000040;
2386 pub const PSP_CTRL_LEFT: i32 = 0x000080;
2387 pub const PSP_CTRL_LTRIGGER: i32 = 0x000100;
2388 pub const PSP_CTRL_RTRIGGER: i32 = 0x000200;
2389 pub const PSP_CTRL_TRIANGLE: i32 = 0x001000;
2390 pub const PSP_CTRL_CIRCLE: i32 = 0x002000;
2391 pub const PSP_CTRL_CROSS: i32 = 0x004000;
2392 pub const PSP_CTRL_SQUARE: i32 = 0x008000;
2393 pub const PSP_CTRL_HOME: i32 = 0x010000;
2394 pub const PSP_CTRL_HOLD: i32 = 0x020000;
2395 pub const PSP_CTRL_NOTE: i32 = 0x800000;
2396 pub const PSP_CTRL_SCREEN: i32 = 0x400000;
2397 pub const PSP_CTRL_VOLUP: i32 = 0x100000;
2398 pub const PSP_CTRL_VOLDOWN: i32 = 0x200000;
2399 pub const PSP_CTRL_WLAN_UP: i32 = 0x040000;
2400 pub const PSP_CTRL_REMOTE: i32 = 0x080000;
2401 pub const PSP_CTRL_DISC: i32 = 0x1000000;
2402 pub const PSP_CTRL_MS: i32 = 0x2000000;
2403 
2404 pub const USB_CAM_PID: i32 = 0x282;
2405 pub const USB_BUS_DRIVER_NAME: &str = "USBBusDriver";
2406 pub const USB_CAM_DRIVER_NAME: &str = "USBCamDriver";
2407 pub const USB_CAM_MIC_DRIVER_NAME: &str = "USBCamMicDriver";
2408 pub const USB_STOR_DRIVER_NAME: &str = "USBStor_Driver";
2409 
2410 pub const ACTIVATED: i32 = 0x200;
2411 pub const CONNECTED: i32 = 0x020;
2412 pub const ESTABLISHED: i32 = 0x002;
2413 
2414 pub const USB_CAM_FLIP: i32 = 1;
2415 pub const USB_CAM_MIRROR: i32 = 0x100;
2416 
2417 pub const THREAD_ATTR_VFPU: i32 = 0x00004000;
2418 pub const THREAD_ATTR_USER: i32 = 0x80000000;
2419 pub const THREAD_ATTR_USBWLAN: i32 = 0xa0000000;
2420 pub const THREAD_ATTR_VSH: i32 = 0xc0000000;
2421 pub const THREAD_ATTR_SCRATCH_SRAM: i32 = 0x00008000;
2422 pub const THREAD_ATTR_NO_FILLSTACK: i32 = 0x00100000;
2423 pub const THREAD_ATTR_CLEAR_STACK: i32 = 0x00200000;
2424 
2425 pub const EVENT_WAIT_MULTIPLE: i32 = 0x200;
2426 
2427 pub const EVENT_WAIT_AND: i32 = 0;
2428 pub const EVENT_WAIT_OR: i32 = 1;
2429 pub const EVENT_WAIT_CLEAR: i32 = 0x20;
2430 
2431 pub const POWER_INFO_POWER_SWITCH: i32 = 0x80000000;
2432 pub const POWER_INFO_HOLD_SWITCH: i32 = 0x40000000;
2433 pub const POWER_INFO_STANDBY: i32 = 0x00080000;
2434 pub const POWER_INFO_RESUME_COMPLETE: i32 = 0x00040000;
2435 pub const POWER_INFO_RESUMING: i32 = 0x00020000;
2436 pub const POWER_INFO_SUSPENDING: i32 = 0x00010000;
2437 pub const POWER_INFO_AC_POWER: i32 = 0x00001000;
2438 pub const POWER_INFO_BATTERY_LOW: i32 = 0x00000100;
2439 pub const POWER_INFO_BATTERY_EXIST: i32 = 0x00000080;
2440 pub const POWER_INFO_BATTERY_POWER: i32 = 0x0000007;
2441 
2442 pub const FIO_S_IFLNK: i32 = 0x4000;
2443 pub const FIO_S_IFDIR: i32 = 0x1000;
2444 pub const FIO_S_IFREG: i32 = 0x2000;
2445 pub const FIO_S_ISUID: i32 = 0x0800;
2446 pub const FIO_S_ISGID: i32 = 0x0400;
2447 pub const FIO_S_ISVTX: i32 = 0x0200;
2448 pub const FIO_S_IRUSR: i32 = 0x0100;
2449 pub const FIO_S_IWUSR: i32 = 0x0080;
2450 pub const FIO_S_IXUSR: i32 = 0x0040;
2451 pub const FIO_S_IRGRP: i32 = 0x0020;
2452 pub const FIO_S_IWGRP: i32 = 0x0010;
2453 pub const FIO_S_IXGRP: i32 = 0x0008;
2454 pub const FIO_S_IROTH: i32 = 0x0004;
2455 pub const FIO_S_IWOTH: i32 = 0x0002;
2456 pub const FIO_S_IXOTH: i32 = 0x0001;
2457 
2458 pub const FIO_SO_IFLNK: i32 = 0x0008;
2459 pub const FIO_SO_IFDIR: i32 = 0x0010;
2460 pub const FIO_SO_IFREG: i32 = 0x0020;
2461 pub const FIO_SO_IROTH: i32 = 0x0004;
2462 pub const FIO_SO_IWOTH: i32 = 0x0002;
2463 pub const FIO_SO_IXOTH: i32 = 0x0001;
2464 
2465 pub const PSP_O_RD_ONLY: i32 = 0x0001;
2466 pub const PSP_O_WR_ONLY: i32 = 0x0002;
2467 pub const PSP_O_RD_WR: i32 = 0x0003;
2468 pub const PSP_O_NBLOCK: i32 = 0x0004;
2469 pub const PSP_O_DIR: i32 = 0x0008;
2470 pub const PSP_O_APPEND: i32 = 0x0100;
2471 pub const PSP_O_CREAT: i32 = 0x0200;
2472 pub const PSP_O_TRUNC: i32 = 0x0400;
2473 pub const PSP_O_EXCL: i32 = 0x0800;
2474 pub const PSP_O_NO_WAIT: i32 = 0x8000;
2475 
2476 pub const UMD_NOT_PRESENT: i32 = 0x01;
2477 pub const UMD_PRESENT: i32 = 0x02;
2478 pub const UMD_CHANGED: i32 = 0x04;
2479 pub const UMD_INITING: i32 = 0x08;
2480 pub const UMD_INITED: i32 = 0x10;
2481 pub const UMD_READY: i32 = 0x20;
2482 
2483 pub const PLAY_PAUSE: i32 = 0x1;
2484 pub const FORWARD: i32 = 0x4;
2485 pub const BACK: i32 = 0x8;
2486 pub const VOL_UP: i32 = 0x10;
2487 pub const VOL_DOWN: i32 = 0x20;
2488 pub const HOLD: i32 = 0x80;
2489 
2490 pub const GU_PI: f32 = 3.141593;
2491 
2492 pub const GU_TEXTURE_8BIT: i32 = 1;
2493 pub const GU_TEXTURE_16BIT: i32 = 2;
2494 pub const GU_TEXTURE_32BITF: i32 = 3;
2495 pub const GU_COLOR_5650: i32 = 4 << 2;
2496 pub const GU_COLOR_5551: i32 = 5 << 2;
2497 pub const GU_COLOR_4444: i32 = 6 << 2;
2498 pub const GU_COLOR_8888: i32 = 7 << 2;
2499 pub const GU_NORMAL_8BIT: i32 = 1 << 5;
2500 pub const GU_NORMAL_16BIT: i32 = 2 << 5;
2501 pub const GU_NORMAL_32BITF: i32 = 3 << 5;
2502 pub const GU_VERTEX_8BIT: i32 = 1 << 7;
2503 pub const GU_VERTEX_16BIT: i32 = 2 << 7;
2504 pub const GU_VERTEX_32BITF: i32 = 3 << 7;
2505 pub const GU_WEIGHT_8BIT: i32 = 1 << 9;
2506 pub const GU_WEIGHT_16BIT: i32 = 2 << 9;
2507 pub const GU_WEIGHT_32BITF: i32 = 3 << 9;
2508 pub const GU_INDEX_8BIT: i32 = 1 << 11;
2509 pub const GU_INDEX_16BIT: i32 = 2 << 11;
2510 pub const GU_WEIGHTS1: i32 = (((1 - 1) & 7) << 14) as i32;
2511 pub const GU_WEIGHTS2: i32 = (((2 - 1) & 7) << 14) as i32;
2512 pub const GU_WEIGHTS3: i32 = (((3 - 1) & 7) << 14) as i32;
2513 pub const GU_WEIGHTS4: i32 = (((4 - 1) & 7) << 14) as i32;
2514 pub const GU_WEIGHTS5: i32 = (((5 - 1) & 7) << 14) as i32;
2515 pub const GU_WEIGHTS6: i32 = (((6 - 1) & 7) << 14) as i32;
2516 pub const GU_WEIGHTS7: i32 = (((7 - 1) & 7) << 14) as i32;
2517 pub const GU_WEIGHTS8: i32 = (((8 - 1) & 7) << 14) as i32;
2518 pub const GU_VERTICES1: i32 = (((1 - 1) & 7) << 18) as i32;
2519 pub const GU_VERTICES2: i32 = (((2 - 1) & 7) << 18) as i32;
2520 pub const GU_VERTICES3: i32 = (((3 - 1) & 7) << 18) as i32;
2521 pub const GU_VERTICES4: i32 = (((4 - 1) & 7) << 18) as i32;
2522 pub const GU_VERTICES5: i32 = (((5 - 1) & 7) << 18) as i32;
2523 pub const GU_VERTICES6: i32 = (((6 - 1) & 7) << 18) as i32;
2524 pub const GU_VERTICES7: i32 = (((7 - 1) & 7) << 18) as i32;
2525 pub const GU_VERTICES8: i32 = (((8 - 1) & 7) << 18) as i32;
2526 pub const GU_TRANSFORM_2D: i32 = 1 << 23;
2527 pub const GU_TRANSFORM_3D: i32 = 0;
2528 
2529 pub const GU_COLOR_BUFFER_BIT: i32 = 1;
2530 pub const GU_STENCIL_BUFFER_BIT: i32 = 2;
2531 pub const GU_DEPTH_BUFFER_BIT: i32 = 4;
2532 pub const GU_FAST_CLEAR_BIT: i32 = 16;
2533 
2534 pub const GU_AMBIENT: i32 = 1;
2535 pub const GU_DIFFUSE: i32 = 2;
2536 pub const GU_SPECULAR: i32 = 4;
2537 pub const GU_UNKNOWN_LIGHT_COMPONENT: i32 = 8;
2538 
2539 pub const SYSTEM_REGISTRY: [u8; 7] = *b"/system";
2540 pub const REG_KEYNAME_SIZE: u32 = 27;
2541 
2542 pub const UTILITY_MSGDIALOG_ERROR: i32 = 0;
2543 pub const UTILITY_MSGDIALOG_TEXT: i32 = 1;
2544 pub const UTILITY_MSGDIALOG_YES_NO_BUTTONS: i32 = 0x10;
2545 pub const UTILITY_MSGDIALOG_DEFAULT_NO: i32 = 0x100;
2546 
2547 pub const UTILITY_HTMLVIEWER_OPEN_SCE_START_PAGE: i32 = 0x000001;
2548 pub const UTILITY_HTMLVIEWER_DISABLE_STARTUP_LIMITS: i32 = 0x000002;
2549 pub const UTILITY_HTMLVIEWER_DISABLE_EXIT_DIALOG: i32 = 0x000004;
2550 pub const UTILITY_HTMLVIEWER_DISABLE_CURSOR: i32 = 0x000008;
2551 pub const UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_COMPLETE_DIALOG: i32 = 0x000010;
2552 pub const UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_START_DIALOG: i32 = 0x000020;
2553 pub const UTILITY_HTMLVIEWER_DISABLE_DOWNLOAD_DESTINATION_DIALOG: i32 = 0x000040;
2554 pub const UTILITY_HTMLVIEWER_LOCK_DOWNLOAD_DESTINATION_DIALOG: i32 = 0x000080;
2555 pub const UTILITY_HTMLVIEWER_DISABLE_TAB_DISPLAY: i32 = 0x000100;
2556 pub const UTILITY_HTMLVIEWER_ENABLE_ANALOG_HOLD: i32 = 0x000200;
2557 pub const UTILITY_HTMLVIEWER_ENABLE_FLASH: i32 = 0x000400;
2558 pub const UTILITY_HTMLVIEWER_DISABLE_LRTRIGGER: i32 = 0x000800;
2559 
2560 extern "C" {
2561     pub fn sceAudioChReserve(channel: i32, sample_count: i32, format: AudioFormat) -> i32;
2562     pub fn sceAudioChRelease(channel: i32) -> i32;
2563     pub fn sceAudioOutput(channel: i32, vol: i32, buf: *mut c_void) -> i32;
2564     pub fn sceAudioOutputBlocking(channel: i32, vol: i32, buf: *mut c_void) -> i32;
2565     pub fn sceAudioOutputPanned(
2566         channel: i32,
2567         left_vol: i32,
2568         right_vol: i32,
2569         buf: *mut c_void,
2570     ) -> i32;
2571     pub fn sceAudioOutputPannedBlocking(
2572         channel: i32,
2573         left_vol: i32,
2574         right_vol: i32,
2575         buf: *mut c_void,
2576     ) -> i32;
2577     pub fn sceAudioGetChannelRestLen(channel: i32) -> i32;
2578     pub fn sceAudioGetChannelRestLength(channel: i32) -> i32;
2579     pub fn sceAudioSetChannelDataLen(channel: i32, sample_count: i32) -> i32;
2580     pub fn sceAudioChangeChannelConfig(channel: i32, format: AudioFormat) -> i32;
2581     pub fn sceAudioChangeChannelVolume(channel: i32, left_vol: i32, right_vol: i32) -> i32;
2582     pub fn sceAudioOutput2Reserve(sample_count: i32) -> i32;
2583     pub fn sceAudioOutput2Release() -> i32;
2584     pub fn sceAudioOutput2ChangeLength(sample_count: i32) -> i32;
2585     pub fn sceAudioOutput2OutputBlocking(vol: i32, buf: *mut c_void) -> i32;
2586     pub fn sceAudioOutput2GetRestSample() -> i32;
2587     pub fn sceAudioSRCChReserve(
2588         sample_count: i32,
2589         freq: AudioOutputFrequency,
2590         channels: i32,
2591     ) -> i32;
2592     pub fn sceAudioSRCChRelease() -> i32;
2593     pub fn sceAudioSRCOutputBlocking(vol: i32, buf: *mut c_void) -> i32;
2594     pub fn sceAudioInputInit(unknown1: i32, gain: i32, unknown2: i32) -> i32;
2595     pub fn sceAudioInputInitEx(params: *mut AudioInputParams) -> i32;
2596     pub fn sceAudioInputBlocking(sample_count: i32, freq: AudioInputFrequency, buf: *mut c_void);
2597     pub fn sceAudioInput(sample_count: i32, freq: AudioInputFrequency, buf: *mut c_void);
2598     pub fn sceAudioGetInputLength() -> i32;
2599     pub fn sceAudioWaitInputEnd() -> i32;
2600     pub fn sceAudioPollInputEnd() -> i32;
2601 
2602     pub fn sceAtracGetAtracID(ui_codec_type: u32) -> i32;
2603     pub fn sceAtracSetDataAndGetID(buf: *mut c_void, bufsize: usize) -> i32;
2604     pub fn sceAtracDecodeData(
2605         atrac_id: i32,
2606         out_samples: *mut u16,
2607         out_n: *mut i32,
2608         out_end: *mut i32,
2609         out_remain_frame: *mut i32,
2610     ) -> i32;
2611     pub fn sceAtracGetRemainFrame(atrac_id: i32, out_remain_frame: *mut i32) -> i32;
2612     pub fn sceAtracGetStreamDataInfo(
2613         atrac_id: i32,
2614         write_pointer: *mut *mut u8,
2615         available_bytes: *mut u32,
2616         read_offset: *mut u32,
2617     ) -> i32;
2618     pub fn sceAtracAddStreamData(atrac_id: i32, bytes_to_add: u32) -> i32;
2619     pub fn sceAtracGetBitrate(atrac_id: i32, out_bitrate: *mut i32) -> i32;
2620     pub fn sceAtracSetLoopNum(atrac_id: i32, nloops: i32) -> i32;
2621     pub fn sceAtracReleaseAtracID(atrac_id: i32) -> i32;
2622     pub fn sceAtracGetNextSample(atrac_id: i32, out_n: *mut i32) -> i32;
2623     pub fn sceAtracGetMaxSample(atrac_id: i32, out_max: *mut i32) -> i32;
2624     pub fn sceAtracGetBufferInfoForReseting(
2625         atrac_id: i32,
2626         ui_sample: u32,
2627         pbuffer_info: *mut Atrac3BufferInfo,
2628     ) -> i32;
2629     pub fn sceAtracGetChannel(atrac_id: i32, pui_channel: *mut u32) -> i32;
2630     pub fn sceAtracGetInternalErrorInfo(atrac_id: i32, pi_result: *mut i32) -> i32;
2631     pub fn sceAtracGetLoopStatus(
2632         atrac_id: i32,
2633         pi_loop_num: *mut i32,
2634         pui_loop_status: *mut u32,
2635     ) -> i32;
2636     pub fn sceAtracGetNextDecodePosition(atrac_id: i32, pui_sample_position: *mut u32) -> i32;
2637     pub fn sceAtracGetSecondBufferInfo(
2638         atrac_id: i32,
2639         pui_position: *mut u32,
2640         pui_data_byte: *mut u32,
2641     ) -> i32;
2642     pub fn sceAtracGetSoundSample(
2643         atrac_id: i32,
2644         pi_end_sample: *mut i32,
2645         pi_loop_start_sample: *mut i32,
2646         pi_loop_end_sample: *mut i32,
2647     ) -> i32;
2648     pub fn sceAtracResetPlayPosition(
2649         atrac_id: i32,
2650         ui_sample: u32,
2651         ui_write_byte_first_buf: u32,
2652         ui_write_byte_second_buf: u32,
2653     ) -> i32;
2654     pub fn sceAtracSetData(atrac_id: i32, puc_buffer_addr: *mut u8, ui_buffer_byte: u32) -> i32;
2655     pub fn sceAtracSetHalfwayBuffer(
2656         atrac_id: i32,
2657         puc_buffer_addr: *mut u8,
2658         ui_read_byte: u32,
2659         ui_buffer_byte: u32,
2660     ) -> i32;
2661     pub fn sceAtracSetHalfwayBufferAndGetID(
2662         puc_buffer_addr: *mut u8,
2663         ui_read_byte: u32,
2664         ui_buffer_byte: u32,
2665     ) -> i32;
2666     pub fn sceAtracSetSecondBuffer(
2667         atrac_id: i32,
2668         puc_second_buffer_addr: *mut u8,
2669         ui_second_buffer_byte: u32,
2670     ) -> i32;
2671 
2672     pub fn sceCtrlSetSamplingCycle(cycle: i32) -> i32;
2673     pub fn sceCtrlGetSamplingCycle(pcycle: *mut i32) -> i32;
2674     pub fn sceCtrlSetSamplingMode(mode: CtrlMode) -> i32;
2675     pub fn sceCtrlGetSamplingMode(pmode: *mut i32) -> i32;
2676     pub fn sceCtrlPeekBufferPositive(pad_data: *mut SceCtrlData, count: i32) -> i32;
2677     pub fn sceCtrlPeekBufferNegative(pad_data: *mut SceCtrlData, count: i32) -> i32;
2678     pub fn sceCtrlReadBufferPositive(pad_data: *mut SceCtrlData, count: i32) -> i32;
2679     pub fn sceCtrlReadBufferNegative(pad_data: *mut SceCtrlData, count: i32) -> i32;
2680     pub fn sceCtrlPeekLatch(latch_data: *mut SceCtrlLatch) -> i32;
2681     pub fn sceCtrlReadLatch(latch_data: *mut SceCtrlLatch) -> i32;
2682     pub fn sceCtrlSetIdleCancelThreshold(idlereset: i32, idleback: i32) -> i32;
2683     pub fn sceCtrlGetIdleCancelThreshold(idlereset: *mut i32, idleback: *mut i32) -> i32;
2684 
2685     pub fn sceDisplaySetMode(mode: DisplayMode, width: usize, height: usize) -> u32;
2686     pub fn sceDisplayGetMode(pmode: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> i32;
2687     pub fn sceDisplaySetFrameBuf(
2688         top_addr: *const u8,
2689         buffer_width: usize,
2690         pixel_format: DisplayPixelFormat,
2691         sync: DisplaySetBufSync,
2692     ) -> u32;
2693     pub fn sceDisplayGetFrameBuf(
2694         top_addr: *mut *mut c_void,
2695         buffer_width: *mut usize,
2696         pixel_format: *mut DisplayPixelFormat,
2697         sync: DisplaySetBufSync,
2698     ) -> i32;
2699     pub fn sceDisplayGetVcount() -> u32;
2700     pub fn sceDisplayWaitVblank() -> i32;
2701     pub fn sceDisplayWaitVblankCB() -> i32;
2702     pub fn sceDisplayWaitVblankStart() -> i32;
2703     pub fn sceDisplayWaitVblankStartCB() -> i32;
2704     pub fn sceDisplayGetAccumulatedHcount() -> i32;
2705     pub fn sceDisplayGetCurrentHcount() -> i32;
2706     pub fn sceDisplayGetFramePerSec() -> f32;
2707     pub fn sceDisplayIsForeground() -> i32;
2708     pub fn sceDisplayIsVblank() -> i32;
2709 
2710     pub fn sceGeEdramGetSize() -> u32;
2711     pub fn sceGeEdramGetAddr() -> *mut u8;
2712     pub fn sceGeEdramSetAddrTranslation(width: i32) -> i32;
2713     pub fn sceGeGetCmd(cmd: i32) -> u32;
2714     pub fn sceGeGetMtx(type_: GeMatrixType, matrix: *mut c_void) -> i32;
2715     pub fn sceGeGetStack(stack_id: i32, stack: *mut GeStack) -> i32;
2716     pub fn sceGeSaveContext(context: *mut GeContext) -> i32;
2717     pub fn sceGeRestoreContext(context: *const GeContext) -> i32;
2718     pub fn sceGeListEnQueue(
2719         list: *const c_void,
2720         stall: *mut c_void,
2721         cbid: i32,
2722         arg: *mut GeListArgs,
2723     ) -> i32;
2724     pub fn sceGeListEnQueueHead(
2725         list: *const c_void,
2726         stall: *mut c_void,
2727         cbid: i32,
2728         arg: *mut GeListArgs,
2729     ) -> i32;
2730     pub fn sceGeListDeQueue(qid: i32) -> i32;
2731     pub fn sceGeListUpdateStallAddr(qid: i32, stall: *mut c_void) -> i32;
2732     pub fn sceGeListSync(qid: i32, sync_type: i32) -> GeListState;
2733     pub fn sceGeDrawSync(sync_type: i32) -> GeListState;
2734     pub fn sceGeBreak(mode: i32, p_param: *mut GeBreakParam) -> i32;
2735     pub fn sceGeContinue() -> i32;
2736     pub fn sceGeSetCallback(cb: *mut GeCallbackData) -> i32;
2737     pub fn sceGeUnsetCallback(cbid: i32) -> i32;
2738 
2739     pub fn sceKernelExitGame();
2740     pub fn sceKernelRegisterExitCallback(id: SceUid) -> i32;
2741     pub fn sceKernelLoadExec(file: *const u8, param: *mut SceKernelLoadExecParam) -> i32;
2742 
2743     pub fn sceKernelAllocPartitionMemory(
2744         partition: SceSysMemPartitionId,
2745         name: *const u8,
2746         type_: SceSysMemBlockTypes,
2747         size: u32,
2748         addr: *mut c_void,
2749     ) -> SceUid;
2750     pub fn sceKernelGetBlockHeadAddr(blockid: SceUid) -> *mut c_void;
2751     pub fn sceKernelFreePartitionMemory(blockid: SceUid) -> i32;
2752     pub fn sceKernelTotalFreeMemSize() -> usize;
2753     pub fn sceKernelMaxFreeMemSize() -> usize;
2754     pub fn sceKernelDevkitVersion() -> u32;
2755     pub fn sceKernelSetCompiledSdkVersion(version: u32) -> i32;
2756     pub fn sceKernelGetCompiledSdkVersion() -> u32;
2757 
2758     pub fn sceKernelLibcTime(t: *mut i32) -> i32;
2759     pub fn sceKernelLibcClock() -> u32;
2760     pub fn sceKernelLibcGettimeofday(tp: *mut timeval, tzp: *mut timezone) -> i32;
2761     pub fn sceKernelDcacheWritebackAll();
2762     pub fn sceKernelDcacheWritebackInvalidateAll();
2763     pub fn sceKernelDcacheWritebackRange(p: *const c_void, size: u32);
2764     pub fn sceKernelDcacheWritebackInvalidateRange(p: *const c_void, size: u32);
2765     pub fn sceKernelDcacheInvalidateRange(p: *const c_void, size: u32);
2766     pub fn sceKernelIcacheInvalidateAll();
2767     pub fn sceKernelIcacheInvalidateRange(p: *const c_void, size: u32);
2768     pub fn sceKernelUtilsMt19937Init(ctx: *mut SceKernelUtilsMt19937Context, seed: u32) -> i32;
2769     pub fn sceKernelUtilsMt19937UInt(ctx: *mut SceKernelUtilsMt19937Context) -> u32;
2770     pub fn sceKernelUtilsMd5Digest(data: *mut u8, size: u32, digest: *mut u8) -> i32;
2771     pub fn sceKernelUtilsMd5BlockInit(ctx: *mut SceKernelUtilsMd5Context) -> i32;
2772     pub fn sceKernelUtilsMd5BlockUpdate(
2773         ctx: *mut SceKernelUtilsMd5Context,
2774         data: *mut u8,
2775         size: u32,
2776     ) -> i32;
2777     pub fn sceKernelUtilsMd5BlockResult(ctx: *mut SceKernelUtilsMd5Context, digest: *mut u8)
2778         -> i32;
2779     pub fn sceKernelUtilsSha1Digest(data: *mut u8, size: u32, digest: *mut u8) -> i32;
2780     pub fn sceKernelUtilsSha1BlockInit(ctx: *mut SceKernelUtilsSha1Context) -> i32;
2781     pub fn sceKernelUtilsSha1BlockUpdate(
2782         ctx: *mut SceKernelUtilsSha1Context,
2783         data: *mut u8,
2784         size: u32,
2785     ) -> i32;
2786     pub fn sceKernelUtilsSha1BlockResult(
2787         ctx: *mut SceKernelUtilsSha1Context,
2788         digest: *mut u8,
2789     ) -> i32;
2790 
2791     pub fn sceKernelRegisterSubIntrHandler(
2792         int_no: i32,
2793         no: i32,
2794         handler: *mut c_void,
2795         arg: *mut c_void,
2796     ) -> i32;
2797     pub fn sceKernelReleaseSubIntrHandler(int_no: i32, no: i32) -> i32;
2798     pub fn sceKernelEnableSubIntr(int_no: i32, no: i32) -> i32;
2799     pub fn sceKernelDisableSubIntr(int_no: i32, no: i32) -> i32;
2800     pub fn QueryIntrHandlerInfo(
2801         intr_code: SceUid,
2802         sub_intr_code: SceUid,
2803         data: *mut IntrHandlerOptionParam,
2804     ) -> i32;
2805 
2806     pub fn sceKernelCpuSuspendIntr() -> u32;
2807     pub fn sceKernelCpuResumeIntr(flags: u32);
2808     pub fn sceKernelCpuResumeIntrWithSync(flags: u32);
2809     pub fn sceKernelIsCpuIntrSuspended(flags: u32) -> i32;
2810     pub fn sceKernelIsCpuIntrEnable() -> i32;
2811 
2812     pub fn sceKernelLoadModule(
2813         path: *const u8,
2814         flags: i32,
2815         option: *mut SceKernelLMOption,
2816     ) -> SceUid;
2817     pub fn sceKernelLoadModuleMs(
2818         path: *const u8,
2819         flags: i32,
2820         option: *mut SceKernelLMOption,
2821     ) -> SceUid;
2822     pub fn sceKernelLoadModuleByID(
2823         fid: SceUid,
2824         flags: i32,
2825         option: *mut SceKernelLMOption,
2826     ) -> SceUid;
2827     pub fn sceKernelLoadModuleBufferUsbWlan(
2828         buf_size: usize,
2829         buf: *mut c_void,
2830         flags: i32,
2831         option: *mut SceKernelLMOption,
2832     ) -> SceUid;
2833     pub fn sceKernelStartModule(
2834         mod_id: SceUid,
2835         arg_size: usize,
2836         argp: *mut c_void,
2837         status: *mut i32,
2838         option: *mut SceKernelSMOption,
2839     ) -> i32;
2840     pub fn sceKernelStopModule(
2841         mod_id: SceUid,
2842         arg_size: usize,
2843         argp: *mut c_void,
2844         status: *mut i32,
2845         option: *mut SceKernelSMOption,
2846     ) -> i32;
2847     pub fn sceKernelUnloadModule(mod_id: SceUid) -> i32;
2848     pub fn sceKernelSelfStopUnloadModule(unknown: i32, arg_size: usize, argp: *mut c_void) -> i32;
2849     pub fn sceKernelStopUnloadSelfModule(
2850         arg_size: usize,
2851         argp: *mut c_void,
2852         status: *mut i32,
2853         option: *mut SceKernelSMOption,
2854     ) -> i32;
2855     pub fn sceKernelQueryModuleInfo(mod_id: SceUid, info: *mut SceKernelModuleInfo) -> i32;
2856     pub fn sceKernelGetModuleIdList(
2857         read_buf: *mut SceUid,
2858         read_buf_size: i32,
2859         id_count: *mut i32,
2860     ) -> i32;
2861 
2862     pub fn sceKernelVolatileMemLock(unk: i32, ptr: *mut *mut c_void, size: *mut i32) -> i32;
2863     pub fn sceKernelVolatileMemTryLock(unk: i32, ptr: *mut *mut c_void, size: *mut i32) -> i32;
2864     pub fn sceKernelVolatileMemUnlock(unk: i32) -> i32;
2865 
2866     pub fn sceKernelStdin() -> SceUid;
2867     pub fn sceKernelStdout() -> SceUid;
2868     pub fn sceKernelStderr() -> SceUid;
2869 
2870     pub fn sceKernelGetThreadmanIdType(uid: SceUid) -> SceKernelIdListType;
2871     pub fn sceKernelCreateThread(
2872         name: *const u8,
2873         entry: SceKernelThreadEntry,
2874         init_priority: i32,
2875         stack_size: i32,
2876         attr: i32,
2877         option: *mut SceKernelThreadOptParam,
2878     ) -> SceUid;
2879     pub fn sceKernelDeleteThread(thid: SceUid) -> i32;
2880     pub fn sceKernelStartThread(id: SceUid, arg_len: usize, arg_p: *mut c_void) -> i32;
2881     pub fn sceKernelExitThread(status: i32) -> i32;
2882     pub fn sceKernelExitDeleteThread(status: i32) -> i32;
2883     pub fn sceKernelTerminateThread(thid: SceUid) -> i32;
2884     pub fn sceKernelTerminateDeleteThread(thid: SceUid) -> i32;
2885     pub fn sceKernelSuspendDispatchThread() -> i32;
2886     pub fn sceKernelResumeDispatchThread(state: i32) -> i32;
2887     pub fn sceKernelSleepThread() -> i32;
2888     pub fn sceKernelSleepThreadCB() -> i32;
2889     pub fn sceKernelWakeupThread(thid: SceUid) -> i32;
2890     pub fn sceKernelCancelWakeupThread(thid: SceUid) -> i32;
2891     pub fn sceKernelSuspendThread(thid: SceUid) -> i32;
2892     pub fn sceKernelResumeThread(thid: SceUid) -> i32;
2893     pub fn sceKernelWaitThreadEnd(thid: SceUid, timeout: *mut u32) -> i32;
2894     pub fn sceKernelWaitThreadEndCB(thid: SceUid, timeout: *mut u32) -> i32;
2895     pub fn sceKernelDelayThread(delay: u32) -> i32;
2896     pub fn sceKernelDelayThreadCB(delay: u32) -> i32;
2897     pub fn sceKernelDelaySysClockThread(delay: *mut SceKernelSysClock) -> i32;
2898     pub fn sceKernelDelaySysClockThreadCB(delay: *mut SceKernelSysClock) -> i32;
2899     pub fn sceKernelChangeCurrentThreadAttr(unknown: i32, attr: i32) -> i32;
2900     pub fn sceKernelChangeThreadPriority(thid: SceUid, priority: i32) -> i32;
2901     pub fn sceKernelRotateThreadReadyQueue(priority: i32) -> i32;
2902     pub fn sceKernelReleaseWaitThread(thid: SceUid) -> i32;
2903     pub fn sceKernelGetThreadId() -> i32;
2904     pub fn sceKernelGetThreadCurrentPriority() -> i32;
2905     pub fn sceKernelGetThreadExitStatus(thid: SceUid) -> i32;
2906     pub fn sceKernelCheckThreadStack() -> i32;
2907     pub fn sceKernelGetThreadStackFreeSize(thid: SceUid) -> i32;
2908     pub fn sceKernelReferThreadStatus(thid: SceUid, info: *mut SceKernelThreadInfo) -> i32;
2909     pub fn sceKernelReferThreadRunStatus(
2910         thid: SceUid,
2911         status: *mut SceKernelThreadRunStatus,
2912     ) -> i32;
2913     pub fn sceKernelCreateSema(
2914         name: *const u8,
2915         attr: u32,
2916         init_val: i32,
2917         max_val: i32,
2918         option: *mut SceKernelSemaOptParam,
2919     ) -> SceUid;
2920     pub fn sceKernelDeleteSema(sema_id: SceUid) -> i32;
2921     pub fn sceKernelSignalSema(sema_id: SceUid, signal: i32) -> i32;
2922     pub fn sceKernelWaitSema(sema_id: SceUid, signal: i32, timeout: *mut u32) -> i32;
2923     pub fn sceKernelWaitSemaCB(sema_id: SceUid, signal: i32, timeout: *mut u32) -> i32;
2924     pub fn sceKernelPollSema(sema_id: SceUid, signal: i32) -> i32;
2925     pub fn sceKernelReferSemaStatus(sema_id: SceUid, info: *mut SceKernelSemaInfo) -> i32;
2926     pub fn sceKernelCreateEventFlag(
2927         name: *const u8,
2928         attr: i32,
2929         bits: i32,
2930         opt: *mut SceKernelEventFlagOptParam,
2931     ) -> SceUid;
2932     pub fn sceKernelSetEventFlag(ev_id: SceUid, bits: u32) -> i32;
2933     pub fn sceKernelClearEventFlag(ev_id: SceUid, bits: u32) -> i32;
2934     pub fn sceKernelPollEventFlag(ev_id: SceUid, bits: u32, wait: i32, out_bits: *mut u32) -> i32;
2935     pub fn sceKernelWaitEventFlag(
2936         ev_id: SceUid,
2937         bits: u32,
2938         wait: i32,
2939         out_bits: *mut u32,
2940         timeout: *mut u32,
2941     ) -> i32;
2942     pub fn sceKernelWaitEventFlagCB(
2943         ev_id: SceUid,
2944         bits: u32,
2945         wait: i32,
2946         out_bits: *mut u32,
2947         timeout: *mut u32,
2948     ) -> i32;
2949     pub fn sceKernelDeleteEventFlag(ev_id: SceUid) -> i32;
2950     pub fn sceKernelReferEventFlagStatus(event: SceUid, status: *mut SceKernelEventFlagInfo)
2951         -> i32;
2952     pub fn sceKernelCreateMbx(
2953         name: *const u8,
2954         attr: u32,
2955         option: *mut SceKernelMbxOptParam,
2956     ) -> SceUid;
2957     pub fn sceKernelDeleteMbx(mbx_id: SceUid) -> i32;
2958     pub fn sceKernelSendMbx(mbx_id: SceUid, message: *mut c_void) -> i32;
2959     pub fn sceKernelReceiveMbx(mbx_id: SceUid, message: *mut *mut c_void, timeout: *mut u32)
2960         -> i32;
2961     pub fn sceKernelReceiveMbxCB(
2962         mbx_id: SceUid,
2963         message: *mut *mut c_void,
2964         timeout: *mut u32,
2965     ) -> i32;
2966     pub fn sceKernelPollMbx(mbx_id: SceUid, pmessage: *mut *mut c_void) -> i32;
2967     pub fn sceKernelCancelReceiveMbx(mbx_id: SceUid, num: *mut i32) -> i32;
2968     pub fn sceKernelReferMbxStatus(mbx_id: SceUid, info: *mut SceKernelMbxInfo) -> i32;
2969     pub fn sceKernelSetAlarm(
2970         clock: u32,
2971         handler: SceKernelAlarmHandler,
2972         common: *mut c_void,
2973     ) -> SceUid;
2974     pub fn sceKernelSetSysClockAlarm(
2975         clock: *mut SceKernelSysClock,
2976         handler: *mut SceKernelAlarmHandler,
2977         common: *mut c_void,
2978     ) -> SceUid;
2979     pub fn sceKernelCancelAlarm(alarm_id: SceUid) -> i32;
2980     pub fn sceKernelReferAlarmStatus(alarm_id: SceUid, info: *mut SceKernelAlarmInfo) -> i32;
2981     pub fn sceKernelCreateCallback(
2982         name: *const u8,
2983         func: SceKernelCallbackFunction,
2984         arg: *mut c_void,
2985     ) -> SceUid;
2986     pub fn sceKernelReferCallbackStatus(cb: SceUid, status: *mut SceKernelCallbackInfo) -> i32;
2987     pub fn sceKernelDeleteCallback(cb: SceUid) -> i32;
2988     pub fn sceKernelNotifyCallback(cb: SceUid, arg2: i32) -> i32;
2989     pub fn sceKernelCancelCallback(cb: SceUid) -> i32;
2990     pub fn sceKernelGetCallbackCount(cb: SceUid) -> i32;
2991     pub fn sceKernelCheckCallback() -> i32;
2992     pub fn sceKernelGetThreadmanIdList(
2993         type_: SceKernelIdListType,
2994         read_buf: *mut SceUid,
2995         read_buf_size: i32,
2996         id_count: *mut i32,
2997     ) -> i32;
2998     pub fn sceKernelReferSystemStatus(status: *mut SceKernelSystemStatus) -> i32;
2999     pub fn sceKernelCreateMsgPipe(
3000         name: *const u8,
3001         part: i32,
3002         attr: i32,
3003         unk1: *mut c_void,
3004         opt: *mut c_void,
3005     ) -> SceUid;
3006     pub fn sceKernelDeleteMsgPipe(uid: SceUid) -> i32;
3007     pub fn sceKernelSendMsgPipe(
3008         uid: SceUid,
3009         message: *mut c_void,
3010         size: u32,
3011         unk1: i32,
3012         unk2: *mut c_void,
3013         timeout: *mut u32,
3014     ) -> i32;
3015     pub fn sceKernelSendMsgPipeCB(
3016         uid: SceUid,
3017         message: *mut c_void,
3018         size: u32,
3019         unk1: i32,
3020         unk2: *mut c_void,
3021         timeout: *mut u32,
3022     ) -> i32;
3023     pub fn sceKernelTrySendMsgPipe(
3024         uid: SceUid,
3025         message: *mut c_void,
3026         size: u32,
3027         unk1: i32,
3028         unk2: *mut c_void,
3029     ) -> i32;
3030     pub fn sceKernelReceiveMsgPipe(
3031         uid: SceUid,
3032         message: *mut c_void,
3033         size: u32,
3034         unk1: i32,
3035         unk2: *mut c_void,
3036         timeout: *mut u32,
3037     ) -> i32;
3038     pub fn sceKernelReceiveMsgPipeCB(
3039         uid: SceUid,
3040         message: *mut c_void,
3041         size: u32,
3042         unk1: i32,
3043         unk2: *mut c_void,
3044         timeout: *mut u32,
3045     ) -> i32;
3046     pub fn sceKernelTryReceiveMsgPipe(
3047         uid: SceUid,
3048         message: *mut c_void,
3049         size: u32,
3050         unk1: i32,
3051         unk2: *mut c_void,
3052     ) -> i32;
3053     pub fn sceKernelCancelMsgPipe(uid: SceUid, send: *mut i32, recv: *mut i32) -> i32;
3054     pub fn sceKernelReferMsgPipeStatus(uid: SceUid, info: *mut SceKernelMppInfo) -> i32;
3055     pub fn sceKernelCreateVpl(
3056         name: *const u8,
3057         part: i32,
3058         attr: i32,
3059         size: u32,
3060         opt: *mut SceKernelVplOptParam,
3061     ) -> SceUid;
3062     pub fn sceKernelDeleteVpl(uid: SceUid) -> i32;
3063     pub fn sceKernelAllocateVpl(
3064         uid: SceUid,
3065         size: u32,
3066         data: *mut *mut c_void,
3067         timeout: *mut u32,
3068     ) -> i32;
3069     pub fn sceKernelAllocateVplCB(
3070         uid: SceUid,
3071         size: u32,
3072         data: *mut *mut c_void,
3073         timeout: *mut u32,
3074     ) -> i32;
3075     pub fn sceKernelTryAllocateVpl(uid: SceUid, size: u32, data: *mut *mut c_void) -> i32;
3076     pub fn sceKernelFreeVpl(uid: SceUid, data: *mut c_void) -> i32;
3077     pub fn sceKernelCancelVpl(uid: SceUid, num: *mut i32) -> i32;
3078     pub fn sceKernelReferVplStatus(uid: SceUid, info: *mut SceKernelVplInfo) -> i32;
3079     pub fn sceKernelCreateFpl(
3080         name: *const u8,
3081         part: i32,
3082         attr: i32,
3083         size: u32,
3084         blocks: u32,
3085         opt: *mut SceKernelFplOptParam,
3086     ) -> i32;
3087     pub fn sceKernelDeleteFpl(uid: SceUid) -> i32;
3088     pub fn sceKernelAllocateFpl(uid: SceUid, data: *mut *mut c_void, timeout: *mut u32) -> i32;
3089     pub fn sceKernelAllocateFplCB(uid: SceUid, data: *mut *mut c_void, timeout: *mut u32) -> i32;
3090     pub fn sceKernelTryAllocateFpl(uid: SceUid, data: *mut *mut c_void) -> i32;
3091     pub fn sceKernelFreeFpl(uid: SceUid, data: *mut c_void) -> i32;
3092     pub fn sceKernelCancelFpl(uid: SceUid, pnum: *mut i32) -> i32;
3093     pub fn sceKernelReferFplStatus(uid: SceUid, info: *mut SceKernelFplInfo) -> i32;
3094     pub fn sceKernelUSec2SysClock(usec: u32, clock: *mut SceKernelSysClock) -> i32;
3095     pub fn sceKernelUSec2SysClockWide(usec: u32) -> i64;
3096     pub fn sceKernelSysClock2USec(
3097         clock: *mut SceKernelSysClock,
3098         low: *mut u32,
3099         high: *mut u32,
3100     ) -> i32;
3101     pub fn sceKernelSysClock2USecWide(clock: i64, low: *mut u32, high: *mut u32) -> i32;
3102     pub fn sceKernelGetSystemTime(time: *mut SceKernelSysClock) -> i32;
3103     pub fn sceKernelGetSystemTimeWide() -> i64;
3104     pub fn sceKernelGetSystemTimeLow() -> u32;
3105     pub fn sceKernelCreateVTimer(name: *const u8, opt: *mut SceKernelVTimerOptParam) -> SceUid;
3106     pub fn sceKernelDeleteVTimer(uid: SceUid) -> i32;
3107     pub fn sceKernelGetVTimerBase(uid: SceUid, base: *mut SceKernelSysClock) -> i32;
3108     pub fn sceKernelGetVTimerBaseWide(uid: SceUid) -> i64;
3109     pub fn sceKernelGetVTimerTime(uid: SceUid, time: *mut SceKernelSysClock) -> i32;
3110     pub fn sceKernelGetVTimerTimeWide(uid: SceUid) -> i64;
3111     pub fn sceKernelSetVTimerTime(uid: SceUid, time: *mut SceKernelSysClock) -> i32;
3112     pub fn sceKernelSetVTimerTimeWide(uid: SceUid, time: i64) -> i64;
3113     pub fn sceKernelStartVTimer(uid: SceUid) -> i32;
3114     pub fn sceKernelStopVTimer(uid: SceUid) -> i32;
3115     pub fn sceKernelSetVTimerHandler(
3116         uid: SceUid,
3117         time: *mut SceKernelSysClock,
3118         handler: SceKernelVTimerHandler,
3119         common: *mut c_void,
3120     ) -> i32;
3121     pub fn sceKernelSetVTimerHandlerWide(
3122         uid: SceUid,
3123         time: i64,
3124         handler: SceKernelVTimerHandlerWide,
3125         common: *mut c_void,
3126     ) -> i32;
3127     pub fn sceKernelCancelVTimerHandler(uid: SceUid) -> i32;
3128     pub fn sceKernelReferVTimerStatus(uid: SceUid, info: *mut SceKernelVTimerInfo) -> i32;
3129     pub fn sceKernelRegisterThreadEventHandler(
3130         name: *const u8,
3131         thread_id: SceUid,
3132         mask: i32,
3133         handler: SceKernelThreadEventHandler,
3134         common: *mut c_void,
3135     ) -> SceUid;
3136     pub fn sceKernelReleaseThreadEventHandler(uid: SceUid) -> i32;
3137     pub fn sceKernelReferThreadEventHandlerStatus(
3138         uid: SceUid,
3139         info: *mut SceKernelThreadEventHandlerInfo,
3140     ) -> i32;
3141     pub fn sceKernelReferThreadProfiler() -> *mut DebugProfilerRegs;
3142     pub fn sceKernelReferGlobalProfiler() -> *mut DebugProfilerRegs;
3143 
3144     pub fn sceUsbStart(driver_name: *const u8, size: i32, args: *mut c_void) -> i32;
3145     pub fn sceUsbStop(driver_name: *const u8, size: i32, args: *mut c_void) -> i32;
3146     pub fn sceUsbActivate(pid: u32) -> i32;
3147     pub fn sceUsbDeactivate(pid: u32) -> i32;
3148     pub fn sceUsbGetState() -> i32;
3149     pub fn sceUsbGetDrvState(driver_name: *const u8) -> i32;
3150 }
3151 
3152 extern "C" {
3153     pub fn sceUsbCamSetupStill(param: *mut UsbCamSetupStillParam) -> i32;
3154     pub fn sceUsbCamSetupStillEx(param: *mut UsbCamSetupStillExParam) -> i32;
3155     pub fn sceUsbCamStillInputBlocking(buf: *mut u8, size: usize) -> i32;
3156     pub fn sceUsbCamStillInput(buf: *mut u8, size: usize) -> i32;
3157     pub fn sceUsbCamStillWaitInputEnd() -> i32;
3158     pub fn sceUsbCamStillPollInputEnd() -> i32;
3159     pub fn sceUsbCamStillCancelInput() -> i32;
3160     pub fn sceUsbCamStillGetInputLength() -> i32;
3161     pub fn sceUsbCamSetupVideo(
3162         param: *mut UsbCamSetupVideoParam,
3163         work_area: *mut c_void,
3164         work_area_size: i32,
3165     ) -> i32;
3166     pub fn sceUsbCamSetupVideoEx(
3167         param: *mut UsbCamSetupVideoExParam,
3168         work_area: *mut c_void,
3169         work_area_size: i32,
3170     ) -> i32;
3171     pub fn sceUsbCamStartVideo() -> i32;
3172     pub fn sceUsbCamStopVideo() -> i32;
3173     pub fn sceUsbCamReadVideoFrameBlocking(buf: *mut u8, size: usize) -> i32;
3174     pub fn sceUsbCamReadVideoFrame(buf: *mut u8, size: usize) -> i32;
3175     pub fn sceUsbCamWaitReadVideoFrameEnd() -> i32;
3176     pub fn sceUsbCamPollReadVideoFrameEnd() -> i32;
3177     pub fn sceUsbCamGetReadVideoFrameSize() -> i32;
3178     pub fn sceUsbCamSetSaturation(saturation: i32) -> i32;
3179     pub fn sceUsbCamSetBrightness(brightness: i32) -> i32;
3180     pub fn sceUsbCamSetContrast(contrast: i32) -> i32;
3181     pub fn sceUsbCamSetSharpness(sharpness: i32) -> i32;
3182     pub fn sceUsbCamSetImageEffectMode(effect_mode: UsbCamEffectMode) -> i32;
3183     pub fn sceUsbCamSetEvLevel(exposure_level: UsbCamEvLevel) -> i32;
3184     pub fn sceUsbCamSetReverseMode(reverse_flags: i32) -> i32;
3185     pub fn sceUsbCamSetZoom(zoom: i32) -> i32;
3186     pub fn sceUsbCamGetSaturation(saturation: *mut i32) -> i32;
3187     pub fn sceUsbCamGetBrightness(brightness: *mut i32) -> i32;
3188     pub fn sceUsbCamGetContrast(contrast: *mut i32) -> i32;
3189     pub fn sceUsbCamGetSharpness(sharpness: *mut i32) -> i32;
3190     pub fn sceUsbCamGetImageEffectMode(effect_mode: *mut UsbCamEffectMode) -> i32;
3191     pub fn sceUsbCamGetEvLevel(exposure_level: *mut UsbCamEvLevel) -> i32;
3192     pub fn sceUsbCamGetReverseMode(reverse_flags: *mut i32) -> i32;
3193     pub fn sceUsbCamGetZoom(zoom: *mut i32) -> i32;
3194     pub fn sceUsbCamAutoImageReverseSW(on: i32) -> i32;
3195     pub fn sceUsbCamGetAutoImageReverseState() -> i32;
3196     pub fn sceUsbCamGetLensDirection() -> i32;
3197 
3198     pub fn sceUsbstorBootRegisterNotify(event_flag: SceUid) -> i32;
3199     pub fn sceUsbstorBootUnregisterNotify(event_flag: u32) -> i32;
3200     pub fn sceUsbstorBootSetCapacity(size: u32) -> i32;
3201 
3202     pub fn scePowerRegisterCallback(slot: i32, cbid: SceUid) -> i32;
3203     pub fn scePowerUnregisterCallback(slot: i32) -> i32;
3204     pub fn scePowerIsPowerOnline() -> i32;
3205     pub fn scePowerIsBatteryExist() -> i32;
3206     pub fn scePowerIsBatteryCharging() -> i32;
3207     pub fn scePowerGetBatteryChargingStatus() -> i32;
3208     pub fn scePowerIsLowBattery() -> i32;
3209     pub fn scePowerGetBatteryLifePercent() -> i32;
3210     pub fn scePowerGetBatteryLifeTime() -> i32;
3211     pub fn scePowerGetBatteryTemp() -> i32;
3212     pub fn scePowerGetBatteryElec() -> i32;
3213     pub fn scePowerGetBatteryVolt() -> i32;
3214     pub fn scePowerSetCpuClockFrequency(cpufreq: i32) -> i32;
3215     pub fn scePowerSetBusClockFrequency(busfreq: i32) -> i32;
3216     pub fn scePowerGetCpuClockFrequency() -> i32;
3217     pub fn scePowerGetCpuClockFrequencyInt() -> i32;
3218     pub fn scePowerGetCpuClockFrequencyFloat() -> f32;
3219     pub fn scePowerGetBusClockFrequency() -> i32;
3220     pub fn scePowerGetBusClockFrequencyInt() -> i32;
3221     pub fn scePowerGetBusClockFrequencyFloat() -> f32;
3222     pub fn scePowerSetClockFrequency(pllfreq: i32, cpufreq: i32, busfreq: i32) -> i32;
3223     pub fn scePowerLock(unknown: i32) -> i32;
3224     pub fn scePowerUnlock(unknown: i32) -> i32;
3225     pub fn scePowerTick(t: PowerTick) -> i32;
3226     pub fn scePowerGetIdleTimer() -> i32;
3227     pub fn scePowerIdleTimerEnable(unknown: i32) -> i32;
3228     pub fn scePowerIdleTimerDisable(unknown: i32) -> i32;
3229     pub fn scePowerRequestStandby() -> i32;
3230     pub fn scePowerRequestSuspend() -> i32;
3231 
3232     pub fn sceWlanDevIsPowerOn() -> i32;
3233     pub fn sceWlanGetSwitchState() -> i32;
3234     pub fn sceWlanGetEtherAddr(ether_addr: *mut u8) -> i32;
3235 
3236     pub fn sceWlanDevAttach() -> i32;
3237     pub fn sceWlanDevDetach() -> i32;
3238 
3239     pub fn sceRtcGetTickResolution() -> u32;
3240     pub fn sceRtcGetCurrentTick(tick: *mut u64) -> i32;
3241     pub fn sceRtcGetCurrentClock(tm: *mut ScePspDateTime, tz: i32) -> i32;
3242     pub fn sceRtcGetCurrentClockLocalTime(tm: *mut ScePspDateTime) -> i32;
3243     pub fn sceRtcConvertUtcToLocalTime(tick_utc: *const u64, tick_local: *mut u64) -> i32;
3244     pub fn sceRtcConvertLocalTimeToUTC(tick_local: *const u64, tick_utc: *mut u64) -> i32;
3245     pub fn sceRtcIsLeapYear(year: i32) -> i32;
3246     pub fn sceRtcGetDaysInMonth(year: i32, month: i32) -> i32;
3247     pub fn sceRtcGetDayOfWeek(year: i32, month: i32, day: i32) -> i32;
3248     pub fn sceRtcCheckValid(date: *const ScePspDateTime) -> i32;
3249     pub fn sceRtcSetTick(date: *mut ScePspDateTime, tick: *const u64) -> i32;
3250     pub fn sceRtcGetTick(date: *const ScePspDateTime, tick: *mut u64) -> i32;
3251     pub fn sceRtcCompareTick(tick1: *const u64, tick2: *const u64) -> i32;
3252     pub fn sceRtcTickAddTicks(dest_tick: *mut u64, src_tick: *const u64, num_ticks: u64) -> i32;
3253     pub fn sceRtcTickAddMicroseconds(dest_tick: *mut u64, src_tick: *const u64, num_ms: u64)
3254         -> i32;
3255     pub fn sceRtcTickAddSeconds(dest_tick: *mut u64, src_tick: *const u64, num_seconds: u64)
3256         -> i32;
3257     pub fn sceRtcTickAddMinutes(dest_tick: *mut u64, src_tick: *const u64, num_minutes: u64)
3258         -> i32;
3259     pub fn sceRtcTickAddHours(dest_tick: *mut u64, src_tick: *const u64, num_hours: u64) -> i32;
3260     pub fn sceRtcTickAddDays(dest_tick: *mut u64, src_tick: *const u64, num_days: u64) -> i32;
3261     pub fn sceRtcTickAddWeeks(dest_tick: *mut u64, src_tick: *const u64, num_weeks: u64) -> i32;
3262     pub fn sceRtcTickAddMonths(dest_tick: *mut u64, src_tick: *const u64, num_months: u64) -> i32;
3263     pub fn sceRtcTickAddYears(dest_tick: *mut u64, src_tick: *const u64, num_years: u64) -> i32;
3264     pub fn sceRtcSetTime_t(date: *mut ScePspDateTime, time: u32) -> i32;
3265     pub fn sceRtcGetTime_t(date: *const ScePspDateTime, time: *mut u32) -> i32;
3266     pub fn sceRtcSetTime64_t(date: *mut ScePspDateTime, time: u64) -> i32;
3267     pub fn sceRtcGetTime64_t(date: *const ScePspDateTime, time: *mut u64) -> i32;
3268     pub fn sceRtcSetDosTime(date: *mut ScePspDateTime, dos_time: u32) -> i32;
3269     pub fn sceRtcGetDosTime(date: *mut ScePspDateTime, dos_time: u32) -> i32;
3270     pub fn sceRtcSetWin32FileTime(date: *mut ScePspDateTime, time: *mut u64) -> i32;
3271     pub fn sceRtcGetWin32FileTime(date: *mut ScePspDateTime, time: *mut u64) -> i32;
3272     pub fn sceRtcParseDateTime(dest_tick: *mut u64, date_string: *const u8) -> i32;
3273     pub fn sceRtcFormatRFC3339(
3274         psz_date_time: *mut char,
3275         p_utc: *const u64,
3276         time_zone_minutes: i32,
3277     ) -> i32;
3278     pub fn sceRtcFormatRFC3339LocalTime(psz_date_time: *mut char, p_utc: *const u64) -> i32;
3279     pub fn sceRtcParseRFC3339(p_utc: *mut u64, psz_date_time: *const u8) -> i32;
3280     pub fn sceRtcFormatRFC2822(
3281         psz_date_time: *mut char,
3282         p_utc: *const u64,
3283         time_zone_minutes: i32,
3284     ) -> i32;
3285     pub fn sceRtcFormatRFC2822LocalTime(psz_date_time: *mut char, p_utc: *const u64) -> i32;
3286 
3287     pub fn sceIoOpen(file: *const u8, flags: i32, permissions: IoPermissions) -> SceUid;
3288     pub fn sceIoOpenAsync(file: *const u8, flags: i32, permissions: IoPermissions) -> SceUid;
3289     pub fn sceIoClose(fd: SceUid) -> i32;
3290     pub fn sceIoCloseAsync(fd: SceUid) -> i32;
3291     pub fn sceIoRead(fd: SceUid, data: *mut c_void, size: u32) -> i32;
3292     pub fn sceIoReadAsync(fd: SceUid, data: *mut c_void, size: u32) -> i32;
3293     pub fn sceIoWrite(fd: SceUid, data: *const c_void, size: usize) -> i32;
3294     pub fn sceIoWriteAsync(fd: SceUid, data: *const c_void, size: u32) -> i32;
3295     pub fn sceIoLseek(fd: SceUid, offset: i64, whence: IoWhence) -> i64;
3296     pub fn sceIoLseekAsync(fd: SceUid, offset: i64, whence: IoWhence) -> i32;
3297     pub fn sceIoLseek32(fd: SceUid, offset: i32, whence: IoWhence) -> i32;
3298     pub fn sceIoLseek32Async(fd: SceUid, offset: i32, whence: IoWhence) -> i32;
3299     pub fn sceIoRemove(file: *const u8) -> i32;
3300     pub fn sceIoMkdir(dir: *const u8, mode: IoPermissions) -> i32;
3301     pub fn sceIoRmdir(path: *const u8) -> i32;
3302     pub fn sceIoChdir(path: *const u8) -> i32;
3303     pub fn sceIoRename(oldname: *const u8, newname: *const u8) -> i32;
3304     pub fn sceIoDopen(dirname: *const u8) -> SceUid;
3305     pub fn sceIoDread(fd: SceUid, dir: *mut SceIoDirent) -> i32;
3306     pub fn sceIoDclose(fd: SceUid) -> i32;
3307     pub fn sceIoDevctl(
3308         dev: *const u8,
3309         cmd: u32,
3310         indata: *mut c_void,
3311         inlen: i32,
3312         outdata: *mut c_void,
3313         outlen: i32,
3314     ) -> i32;
3315     pub fn sceIoAssign(
3316         dev1: *const u8,
3317         dev2: *const u8,
3318         dev3: *const u8,
3319         mode: IoAssignPerms,
3320         unk1: *mut c_void,
3321         unk2: i32,
3322     ) -> i32;
3323     pub fn sceIoUnassign(dev: *const u8) -> i32;
3324     pub fn sceIoGetstat(file: *const u8, stat: *mut SceIoStat) -> i32;
3325     pub fn sceIoChstat(file: *const u8, stat: *mut SceIoStat, bits: i32) -> i32;
3326     pub fn sceIoIoctl(
3327         fd: SceUid,
3328         cmd: u32,
3329         indata: *mut c_void,
3330         inlen: i32,
3331         outdata: *mut c_void,
3332         outlen: i32,
3333     ) -> i32;
3334     pub fn sceIoIoctlAsync(
3335         fd: SceUid,
3336         cmd: u32,
3337         indata: *mut c_void,
3338         inlen: i32,
3339         outdata: *mut c_void,
3340         outlen: i32,
3341     ) -> i32;
3342     pub fn sceIoSync(device: *const u8, unk: u32) -> i32;
3343     pub fn sceIoWaitAsync(fd: SceUid, res: *mut i64) -> i32;
3344     pub fn sceIoWaitAsyncCB(fd: SceUid, res: *mut i64) -> i32;
3345     pub fn sceIoPollAsync(fd: SceUid, res: *mut i64) -> i32;
3346     pub fn sceIoGetAsyncStat(fd: SceUid, poll: i32, res: *mut i64) -> i32;
3347     pub fn sceIoCancel(fd: SceUid) -> i32;
3348     pub fn sceIoGetDevType(fd: SceUid) -> i32;
3349     pub fn sceIoChangeAsyncPriority(fd: SceUid, pri: i32) -> i32;
3350     pub fn sceIoSetAsyncCallback(fd: SceUid, cb: SceUid, argp: *mut c_void) -> i32;
3351 
3352     pub fn sceJpegInitMJpeg() -> i32;
3353     pub fn sceJpegFinishMJpeg() -> i32;
3354     pub fn sceJpegCreateMJpeg(width: i32, height: i32) -> i32;
3355     pub fn sceJpegDeleteMJpeg() -> i32;
3356     pub fn sceJpegDecodeMJpeg(jpeg_buf: *mut u8, size: usize, rgba: *mut c_void, unk: u32) -> i32;
3357 
3358     pub fn sceUmdCheckMedium() -> i32;
3359     pub fn sceUmdGetDiscInfo(info: *mut UmdInfo) -> i32;
3360     pub fn sceUmdActivate(unit: i32, drive: *const u8) -> i32;
3361     pub fn sceUmdDeactivate(unit: i32, drive: *const u8) -> i32;
3362     pub fn sceUmdWaitDriveStat(state: i32) -> i32;
3363     pub fn sceUmdWaitDriveStatWithTimer(state: i32, timeout: u32) -> i32;
3364     pub fn sceUmdWaitDriveStatCB(state: i32, timeout: u32) -> i32;
3365     pub fn sceUmdCancelWaitDriveStat() -> i32;
3366     pub fn sceUmdGetDriveStat() -> i32;
3367     pub fn sceUmdGetErrorStat() -> i32;
3368     pub fn sceUmdRegisterUMDCallBack(cbid: i32) -> i32;
3369     pub fn sceUmdUnRegisterUMDCallBack(cbid: i32) -> i32;
3370     pub fn sceUmdReplacePermit() -> i32;
3371     pub fn sceUmdReplaceProhibit() -> i32;
3372 
3373     pub fn sceMpegInit() -> i32;
3374     pub fn sceMpegFinish();
3375     pub fn sceMpegRingbufferQueryMemSize(packets: i32) -> i32;
3376     pub fn sceMpegRingbufferConstruct(
3377         ringbuffer: *mut SceMpegRingbuffer,
3378         packets: i32,
3379         data: *mut c_void,
3380         size: i32,
3381         callback: SceMpegRingbufferCb,
3382         cb_param: *mut c_void,
3383     ) -> i32;
3384     pub fn sceMpegRingbufferDestruct(ringbuffer: *mut SceMpegRingbuffer);
3385     pub fn sceMpegRingbufferAvailableSize(ringbuffer: *mut SceMpegRingbuffer) -> i32;
3386     pub fn sceMpegRingbufferPut(
3387         ringbuffer: *mut SceMpegRingbuffer,
3388         num_packets: i32,
3389         available: i32,
3390     ) -> i32;
3391     pub fn sceMpegQueryMemSize(unk: i32) -> i32;
3392     pub fn sceMpegCreate(
3393         handle: SceMpeg,
3394         data: *mut c_void,
3395         size: i32,
3396         ringbuffer: *mut SceMpegRingbuffer,
3397         frame_width: i32,
3398         unk1: i32,
3399         unk2: i32,
3400     ) -> i32;
3401     pub fn sceMpegDelete(handle: SceMpeg);
3402     pub fn sceMpegQueryStreamOffset(handle: SceMpeg, buffer: *mut c_void, offset: *mut i32) -> i32;
3403     pub fn sceMpegQueryStreamSize(buffer: *mut c_void, size: *mut i32) -> i32;
3404     pub fn sceMpegRegistStream(handle: SceMpeg, stream_id: i32, unk: i32) -> SceMpegStream;
3405     pub fn sceMpegUnRegistStream(handle: SceMpeg, stream: SceMpegStream);
3406     pub fn sceMpegFlushAllStream(handle: SceMpeg) -> i32;
3407     pub fn sceMpegMallocAvcEsBuf(handle: SceMpeg) -> *mut c_void;
3408     pub fn sceMpegFreeAvcEsBuf(handle: SceMpeg, buf: *mut c_void);
3409     pub fn sceMpegQueryAtracEsSize(handle: SceMpeg, es_size: *mut i32, out_size: *mut i32) -> i32;
3410     pub fn sceMpegInitAu(handle: SceMpeg, es_buffer: *mut c_void, au: *mut SceMpegAu) -> i32;
3411     pub fn sceMpegGetAvcAu(
3412         handle: SceMpeg,
3413         stream: SceMpegStream,
3414         au: *mut SceMpegAu,
3415         unk: *mut i32,
3416     ) -> i32;
3417     pub fn sceMpegAvcDecodeMode(handle: SceMpeg, mode: *mut SceMpegAvcMode) -> i32;
3418     pub fn sceMpegAvcDecode(
3419         handle: SceMpeg,
3420         au: *mut SceMpegAu,
3421         iframe_width: i32,
3422         buffer: *mut c_void,
3423         init: *mut i32,
3424     ) -> i32;
3425     pub fn sceMpegAvcDecodeStop(
3426         handle: SceMpeg,
3427         frame_width: i32,
3428         buffer: *mut c_void,
3429         status: *mut i32,
3430     ) -> i32;
3431     pub fn sceMpegGetAtracAu(
3432         handle: SceMpeg,
3433         stream: SceMpegStream,
3434         au: *mut SceMpegAu,
3435         unk: *mut c_void,
3436     ) -> i32;
3437     pub fn sceMpegAtracDecode(
3438         handle: SceMpeg,
3439         au: *mut SceMpegAu,
3440         buffer: *mut c_void,
3441         init: i32,
3442     ) -> i32;
3443 
3444     pub fn sceMpegBaseYCrCbCopyVme(yuv_buffer: *mut c_void, buffer: *mut i32, type_: i32) -> i32;
3445     pub fn sceMpegBaseCscInit(width: i32) -> i32;
3446     pub fn sceMpegBaseCscVme(
3447         rgb_buffer: *mut c_void,
3448         rgb_buffer2: *mut c_void,
3449         width: i32,
3450         y_cr_cb_buffer: *mut SceMpegYCrCbBuffer,
3451     ) -> i32;
3452     pub fn sceMpegbase_BEA18F91(lli: *mut SceMpegLLI) -> i32;
3453 
3454     pub fn sceHprmPeekCurrentKey(key: *mut i32) -> i32;
3455     pub fn sceHprmPeekLatch(latch: *mut [u32; 4]) -> i32;
3456     pub fn sceHprmReadLatch(latch: *mut [u32; 4]) -> i32;
3457     pub fn sceHprmIsHeadphoneExist() -> i32;
3458     pub fn sceHprmIsRemoteExist() -> i32;
3459     pub fn sceHprmIsMicrophoneExist() -> i32;
3460 
3461     pub fn sceGuDepthBuffer(zbp: *mut c_void, zbw: i32);
3462     pub fn sceGuDispBuffer(width: i32, height: i32, dispbp: *mut c_void, dispbw: i32);
3463     pub fn sceGuDrawBuffer(psm: DisplayPixelFormat, fbp: *mut c_void, fbw: i32);
3464     pub fn sceGuDrawBufferList(psm: DisplayPixelFormat, fbp: *mut c_void, fbw: i32);
3465     pub fn sceGuDisplay(state: bool) -> bool;
3466     pub fn sceGuDepthFunc(function: DepthFunc);
3467     pub fn sceGuDepthMask(mask: i32);
3468     pub fn sceGuDepthOffset(offset: i32);
3469     pub fn sceGuDepthRange(near: i32, far: i32);
3470     pub fn sceGuFog(near: f32, far: f32, color: u32);
3471     pub fn sceGuInit();
3472     pub fn sceGuTerm();
3473     pub fn sceGuBreak(mode: i32);
3474     pub fn sceGuContinue();
3475     pub fn sceGuSetCallback(signal: GuCallbackId, callback: GuCallback) -> GuCallback;
3476     pub fn sceGuSignal(behavior: SignalBehavior, signal: i32);
3477     pub fn sceGuSendCommandf(cmd: GeCommand, argument: f32);
3478     pub fn sceGuSendCommandi(cmd: GeCommand, argument: i32);
3479     pub fn sceGuGetMemory(size: i32) -> *mut c_void;
3480     pub fn sceGuStart(context_type: GuContextType, list: *mut c_void);
3481     pub fn sceGuFinish() -> i32;
3482     pub fn sceGuFinishId(id: u32) -> i32;
3483     pub fn sceGuCallList(list: *const c_void);
3484     pub fn sceGuCallMode(mode: i32);
3485     pub fn sceGuCheckList() -> i32;
3486     pub fn sceGuSendList(mode: GuQueueMode, list: *const c_void, context: *mut GeContext);
3487     pub fn sceGuSwapBuffers() -> *mut c_void;
3488     pub fn sceGuSync(mode: GuSyncMode, behavior: GuSyncBehavior) -> GeListState;
3489     pub fn sceGuDrawArray(
3490         prim: GuPrimitive,
3491         vtype: i32,
3492         count: i32,
3493         indices: *const c_void,
3494         vertices: *const c_void,
3495     );
3496     pub fn sceGuBeginObject(
3497         vtype: i32,
3498         count: i32,
3499         indices: *const c_void,
3500         vertices: *const c_void,
3501     );
3502     pub fn sceGuEndObject();
3503     pub fn sceGuSetStatus(state: GuState, status: i32);
3504     pub fn sceGuGetStatus(state: GuState) -> bool;
3505     pub fn sceGuSetAllStatus(status: i32);
3506     pub fn sceGuGetAllStatus() -> i32;
3507     pub fn sceGuEnable(state: GuState);
3508     pub fn sceGuDisable(state: GuState);
3509     pub fn sceGuLight(light: i32, type_: LightType, components: i32, position: &ScePspFVector3);
3510     pub fn sceGuLightAtt(light: i32, atten0: f32, atten1: f32, atten2: f32);
3511     pub fn sceGuLightColor(light: i32, component: i32, color: u32);
3512     pub fn sceGuLightMode(mode: LightMode);
3513     pub fn sceGuLightSpot(light: i32, direction: &ScePspFVector3, exponent: f32, cutoff: f32);
3514     pub fn sceGuClear(flags: i32);
3515     pub fn sceGuClearColor(color: u32);
3516     pub fn sceGuClearDepth(depth: u32);
3517     pub fn sceGuClearStencil(stencil: u32);
3518     pub fn sceGuPixelMask(mask: u32);
3519     pub fn sceGuColor(color: u32);
3520     pub fn sceGuColorFunc(func: ColorFunc, color: u32, mask: u32);
3521     pub fn sceGuColorMaterial(components: i32);
3522     pub fn sceGuAlphaFunc(func: AlphaFunc, value: i32, mask: i32);
3523     pub fn sceGuAmbient(color: u32);
3524     pub fn sceGuAmbientColor(color: u32);
3525     pub fn sceGuBlendFunc(op: BlendOp, src: BlendSrc, dest: BlendDst, src_fix: u32, dest_fix: u32);
3526     pub fn sceGuMaterial(components: i32, color: u32);
3527     pub fn sceGuModelColor(emissive: u32, ambient: u32, diffuse: u32, specular: u32);
3528     pub fn sceGuStencilFunc(func: StencilFunc, ref_: i32, mask: i32);
3529     pub fn sceGuStencilOp(fail: StencilOperation, zfail: StencilOperation, zpass: StencilOperation);
3530     pub fn sceGuSpecular(power: f32);
3531     pub fn sceGuFrontFace(order: FrontFaceDirection);
3532     pub fn sceGuLogicalOp(op: LogicalOperation);
3533     pub fn sceGuSetDither(matrix: &ScePspIMatrix4);
3534     pub fn sceGuShadeModel(mode: ShadingModel);
3535     pub fn sceGuCopyImage(
3536         psm: DisplayPixelFormat,
3537         sx: i32,
3538         sy: i32,
3539         width: i32,
3540         height: i32,
3541         srcw: i32,
3542         src: *mut c_void,
3543         dx: i32,
3544         dy: i32,
3545         destw: i32,
3546         dest: *mut c_void,
3547     );
3548     pub fn sceGuTexEnvColor(color: u32);
3549     pub fn sceGuTexFilter(min: TextureFilter, mag: TextureFilter);
3550     pub fn sceGuTexFlush();
3551     pub fn sceGuTexFunc(tfx: TextureEffect, tcc: TextureColorComponent);
3552     pub fn sceGuTexImage(
3553         mipmap: MipmapLevel,
3554         width: i32,
3555         height: i32,
3556         tbw: i32,
3557         tbp: *const c_void,
3558     );
3559     pub fn sceGuTexLevelMode(mode: TextureLevelMode, bias: f32);
3560     pub fn sceGuTexMapMode(mode: TextureMapMode, a1: u32, a2: u32);
3561     pub fn sceGuTexMode(tpsm: TexturePixelFormat, maxmips: i32, a2: i32, swizzle: i32);
3562     pub fn sceGuTexOffset(u: f32, v: f32);
3563     pub fn sceGuTexProjMapMode(mode: TextureProjectionMapMode);
3564     pub fn sceGuTexScale(u: f32, v: f32);
3565     pub fn sceGuTexSlope(slope: f32);
3566     pub fn sceGuTexSync();
3567     pub fn sceGuTexWrap(u: GuTexWrapMode, v: GuTexWrapMode);
3568     pub fn sceGuClutLoad(num_blocks: i32, cbp: *const c_void);
3569     pub fn sceGuClutMode(cpsm: ClutPixelFormat, shift: u32, mask: u32, a3: u32);
3570     pub fn sceGuOffset(x: u32, y: u32);
3571     pub fn sceGuScissor(x: i32, y: i32, w: i32, h: i32);
3572     pub fn sceGuViewport(cx: i32, cy: i32, width: i32, height: i32);
3573     pub fn sceGuDrawBezier(
3574         v_type: i32,
3575         u_count: i32,
3576         v_count: i32,
3577         indices: *const c_void,
3578         vertices: *const c_void,
3579     );
3580     pub fn sceGuPatchDivide(ulevel: u32, vlevel: u32);
3581     pub fn sceGuPatchFrontFace(a0: u32);
3582     pub fn sceGuPatchPrim(prim: PatchPrimitive);
3583     pub fn sceGuDrawSpline(
3584         v_type: i32,
3585         u_count: i32,
3586         v_count: i32,
3587         u_edge: i32,
3588         v_edge: i32,
3589         indices: *const c_void,
3590         vertices: *const c_void,
3591     );
3592     pub fn sceGuSetMatrix(type_: MatrixMode, matrix: &ScePspFMatrix4);
3593     pub fn sceGuBoneMatrix(index: u32, matrix: &ScePspFMatrix4);
3594     pub fn sceGuMorphWeight(index: i32, weight: f32);
3595     pub fn sceGuDrawArrayN(
3596         primitive_type: GuPrimitive,
3597         v_type: i32,
3598         count: i32,
3599         a3: i32,
3600         indices: *const c_void,
3601         vertices: *const c_void,
3602     );
3603 
3604     pub fn sceGumDrawArray(
3605         prim: GuPrimitive,
3606         v_type: i32,
3607         count: i32,
3608         indices: *const c_void,
3609         vertices: *const c_void,
3610     );
3611     pub fn sceGumDrawArrayN(
3612         prim: GuPrimitive,
3613         v_type: i32,
3614         count: i32,
3615         a3: i32,
3616         indices: *const c_void,
3617         vertices: *const c_void,
3618     );
3619     pub fn sceGumDrawBezier(
3620         v_type: i32,
3621         u_count: i32,
3622         v_count: i32,
3623         indices: *const c_void,
3624         vertices: *const c_void,
3625     );
3626     pub fn sceGumDrawSpline(
3627         v_type: i32,
3628         u_count: i32,
3629         v_count: i32,
3630         u_edge: i32,
3631         v_edge: i32,
3632         indices: *const c_void,
3633         vertices: *const c_void,
3634     );
3635     pub fn sceGumFastInverse();
3636     pub fn sceGumFullInverse();
3637     pub fn sceGumLoadIdentity();
3638     pub fn sceGumLoadMatrix(m: &ScePspFMatrix4);
3639     pub fn sceGumLookAt(eye: &ScePspFVector3, center: &ScePspFVector3, up: &ScePspFVector3);
3640     pub fn sceGumMatrixMode(mode: MatrixMode);
3641     pub fn sceGumMultMatrix(m: &ScePspFMatrix4);
3642     pub fn sceGumOrtho(left: f32, right: f32, bottom: f32, top: f32, near: f32, far: f32);
3643     pub fn sceGumPerspective(fovy: f32, aspect: f32, near: f32, far: f32);
3644     pub fn sceGumPopMatrix();
3645     pub fn sceGumPushMatrix();
3646     pub fn sceGumRotateX(angle: f32);
3647     pub fn sceGumRotateY(angle: f32);
3648     pub fn sceGumRotateZ(angle: f32);
3649     pub fn sceGumRotateXYZ(v: &ScePspFVector3);
3650     pub fn sceGumRotateZYX(v: &ScePspFVector3);
3651     pub fn sceGumScale(v: &ScePspFVector3);
3652     pub fn sceGumStoreMatrix(m: &mut ScePspFMatrix4);
3653     pub fn sceGumTranslate(v: &ScePspFVector3);
3654     pub fn sceGumUpdateMatrix();
3655 
3656     pub fn sceMp3ReserveMp3Handle(args: *mut SceMp3InitArg) -> i32;
3657     pub fn sceMp3ReleaseMp3Handle(handle: Mp3Handle) -> i32;
3658     pub fn sceMp3InitResource() -> i32;
3659     pub fn sceMp3TermResource() -> i32;
3660     pub fn sceMp3Init(handle: Mp3Handle) -> i32;
3661     pub fn sceMp3Decode(handle: Mp3Handle, dst: *mut *mut i16) -> i32;
3662     pub fn sceMp3GetInfoToAddStreamData(
3663         handle: Mp3Handle,
3664         dst: *mut *mut u8,
3665         to_write: *mut i32,
3666         src_pos: *mut i32,
3667     ) -> i32;
3668     pub fn sceMp3NotifyAddStreamData(handle: Mp3Handle, size: i32) -> i32;
3669     pub fn sceMp3CheckStreamDataNeeded(handle: Mp3Handle) -> i32;
3670     pub fn sceMp3SetLoopNum(handle: Mp3Handle, loop_: i32) -> i32;
3671     pub fn sceMp3GetLoopNum(handle: Mp3Handle) -> i32;
3672     pub fn sceMp3GetSumDecodedSample(handle: Mp3Handle) -> i32;
3673     pub fn sceMp3GetMaxOutputSample(handle: Mp3Handle) -> i32;
3674     pub fn sceMp3GetSamplingRate(handle: Mp3Handle) -> i32;
3675     pub fn sceMp3GetBitRate(handle: Mp3Handle) -> i32;
3676     pub fn sceMp3GetMp3ChannelNum(handle: Mp3Handle) -> i32;
3677     pub fn sceMp3ResetPlayPosition(handle: Mp3Handle) -> i32;
3678 
3679     pub fn sceRegOpenRegistry(reg: *mut Key, mode: i32, handle: *mut RegHandle) -> i32;
3680     pub fn sceRegFlushRegistry(handle: RegHandle) -> i32;
3681     pub fn sceRegCloseRegistry(handle: RegHandle) -> i32;
3682     pub fn sceRegOpenCategory(
3683         handle: RegHandle,
3684         name: *const u8,
3685         mode: i32,
3686         dir_handle: *mut RegHandle,
3687     ) -> i32;
3688     pub fn sceRegRemoveCategory(handle: RegHandle, name: *const u8) -> i32;
3689     pub fn sceRegCloseCategory(dir_handle: RegHandle) -> i32;
3690     pub fn sceRegFlushCategory(dir_handle: RegHandle) -> i32;
3691     pub fn sceRegGetKeyInfo(
3692         dir_handle: RegHandle,
3693         name: *const u8,
3694         key_handle: *mut RegHandle,
3695         type_: *mut KeyType,
3696         size: *mut usize,
3697     ) -> i32;
3698     pub fn sceRegGetKeyInfoByName(
3699         dir_handle: RegHandle,
3700         name: *const u8,
3701         type_: *mut KeyType,
3702         size: *mut usize,
3703     ) -> i32;
3704     pub fn sceRegGetKeyValue(
3705         dir_handle: RegHandle,
3706         key_handle: RegHandle,
3707         buf: *mut c_void,
3708         size: usize,
3709     ) -> i32;
3710     pub fn sceRegGetKeyValueByName(
3711         dir_handle: RegHandle,
3712         name: *const u8,
3713         buf: *mut c_void,
3714         size: usize,
3715     ) -> i32;
3716     pub fn sceRegSetKeyValue(
3717         dir_handle: RegHandle,
3718         name: *const u8,
3719         buf: *const c_void,
3720         size: usize,
3721     ) -> i32;
3722     pub fn sceRegGetKeysNum(dir_handle: RegHandle, num: *mut i32) -> i32;
3723     pub fn sceRegGetKeys(dir_handle: RegHandle, buf: *mut u8, num: i32) -> i32;
3724     pub fn sceRegCreateKey(dir_handle: RegHandle, name: *const u8, type_: i32, size: usize) -> i32;
3725     pub fn sceRegRemoveRegistry(key: *mut Key) -> i32;
3726 
3727     pub fn sceOpenPSIDGetOpenPSID(openpsid: *mut OpenPSID) -> i32;
3728 
3729     pub fn sceUtilityMsgDialogInitStart(params: *mut UtilityMsgDialogParams) -> i32;
3730     pub fn sceUtilityMsgDialogShutdownStart();
3731     pub fn sceUtilityMsgDialogGetStatus() -> i32;
3732     pub fn sceUtilityMsgDialogUpdate(n: i32);
3733     pub fn sceUtilityMsgDialogAbort() -> i32;
3734     pub fn sceUtilityNetconfInitStart(data: *mut UtilityNetconfData) -> i32;
3735     pub fn sceUtilityNetconfShutdownStart() -> i32;
3736     pub fn sceUtilityNetconfUpdate(unknown: i32) -> i32;
3737     pub fn sceUtilityNetconfGetStatus() -> i32;
3738     pub fn sceUtilityCheckNetParam(id: i32) -> i32;
3739     pub fn sceUtilityGetNetParam(conf: i32, param: NetParam, data: *mut UtilityNetData) -> i32;
3740     pub fn sceUtilitySavedataInitStart(params: *mut SceUtilitySavedataParam) -> i32;
3741     pub fn sceUtilitySavedataGetStatus() -> i32;
3742     pub fn sceUtilitySavedataShutdownStart() -> i32;
3743     pub fn sceUtilitySavedataUpdate(unknown: i32);
3744     pub fn sceUtilityGameSharingInitStart(params: *mut UtilityGameSharingParams) -> i32;
3745     pub fn sceUtilityGameSharingShutdownStart();
3746     pub fn sceUtilityGameSharingGetStatus() -> i32;
3747     pub fn sceUtilityGameSharingUpdate(n: i32);
3748     pub fn sceUtilityHtmlViewerInitStart(params: *mut UtilityHtmlViewerParam) -> i32;
3749     pub fn sceUtilityHtmlViewerShutdownStart() -> i32;
3750     pub fn sceUtilityHtmlViewerUpdate(n: i32) -> i32;
3751     pub fn sceUtilityHtmlViewerGetStatus() -> i32;
3752     pub fn sceUtilitySetSystemParamInt(id: SystemParamId, value: i32) -> i32;
3753     pub fn sceUtilitySetSystemParamString(id: SystemParamId, str: *const u8) -> i32;
3754     pub fn sceUtilityGetSystemParamInt(id: SystemParamId, value: *mut i32) -> i32;
3755     pub fn sceUtilityGetSystemParamString(id: SystemParamId, str: *mut u8, len: i32) -> i32;
3756     pub fn sceUtilityOskInitStart(params: *mut SceUtilityOskParams) -> i32;
3757     pub fn sceUtilityOskShutdownStart() -> i32;
3758     pub fn sceUtilityOskUpdate(n: i32) -> i32;
3759     pub fn sceUtilityOskGetStatus() -> i32;
3760     pub fn sceUtilityLoadNetModule(module: NetModule) -> i32;
3761     pub fn sceUtilityUnloadNetModule(module: NetModule) -> i32;
3762     pub fn sceUtilityLoadAvModule(module: AvModule) -> i32;
3763     pub fn sceUtilityUnloadAvModule(module: AvModule) -> i32;
3764     pub fn sceUtilityLoadUsbModule(module: UsbModule) -> i32;
3765     pub fn sceUtilityUnloadUsbModule(module: UsbModule) -> i32;
3766     pub fn sceUtilityLoadModule(module: Module) -> i32;
3767     pub fn sceUtilityUnloadModule(module: Module) -> i32;
3768     pub fn sceUtilityCreateNetParam(conf: i32) -> i32;
3769     pub fn sceUtilitySetNetParam(param: NetParam, val: *const c_void) -> i32;
3770     pub fn sceUtilityCopyNetParam(src: i32, dest: i32) -> i32;
3771     pub fn sceUtilityDeleteNetParam(conf: i32) -> i32;
3772 
3773     pub fn sceNetInit(
3774         poolsize: i32,
3775         calloutprio: i32,
3776         calloutstack: i32,
3777         netintrprio: i32,
3778         netintrstack: i32,
3779     ) -> i32;
3780     pub fn sceNetTerm() -> i32;
3781     pub fn sceNetFreeThreadinfo(thid: i32) -> i32;
3782     pub fn sceNetThreadAbort(thid: i32) -> i32;
3783     pub fn sceNetEtherStrton(name: *mut u8, mac: *mut u8);
3784     pub fn sceNetEtherNtostr(mac: *mut u8, name: *mut u8);
3785     pub fn sceNetGetLocalEtherAddr(mac: *mut u8) -> i32;
3786     pub fn sceNetGetMallocStat(stat: *mut SceNetMallocStat) -> i32;
3787 
3788     pub fn sceNetAdhocctlInit(
3789         stacksize: i32,
3790         priority: i32,
3791         adhoc_id: *mut SceNetAdhocctlAdhocId,
3792     ) -> i32;
3793     pub fn sceNetAdhocctlTerm() -> i32;
3794     pub fn sceNetAdhocctlConnect(name: *const u8) -> i32;
3795     pub fn sceNetAdhocctlDisconnect() -> i32;
3796     pub fn sceNetAdhocctlGetState(event: *mut i32) -> i32;
3797     pub fn sceNetAdhocctlCreate(name: *const u8) -> i32;
3798     pub fn sceNetAdhocctlJoin(scaninfo: *mut SceNetAdhocctlScanInfo) -> i32;
3799     pub fn sceNetAdhocctlGetAdhocId(id: *mut SceNetAdhocctlAdhocId) -> i32;
3800     pub fn sceNetAdhocctlCreateEnterGameMode(
3801         name: *const u8,
3802         unknown: i32,
3803         num: i32,
3804         macs: *mut u8,
3805         timeout: u32,
3806         unknown2: i32,
3807     ) -> i32;
3808     pub fn sceNetAdhocctlJoinEnterGameMode(
3809         name: *const u8,
3810         hostmac: *mut u8,
3811         timeout: u32,
3812         unknown: i32,
3813     ) -> i32;
3814     pub fn sceNetAdhocctlGetGameModeInfo(gamemodeinfo: *mut SceNetAdhocctlGameModeInfo) -> i32;
3815     pub fn sceNetAdhocctlExitGameMode() -> i32;
3816     pub fn sceNetAdhocctlGetPeerList(length: *mut i32, buf: *mut c_void) -> i32;
3817     pub fn sceNetAdhocctlGetPeerInfo(
3818         mac: *mut u8,
3819         size: i32,
3820         peerinfo: *mut SceNetAdhocctlPeerInfo,
3821     ) -> i32;
3822     pub fn sceNetAdhocctlScan() -> i32;
3823     pub fn sceNetAdhocctlGetScanInfo(length: *mut i32, buf: *mut c_void) -> i32;
3824     pub fn sceNetAdhocctlAddHandler(handler: SceNetAdhocctlHandler, unknown: *mut c_void) -> i32;
3825     pub fn sceNetAdhocctlDelHandler(id: i32) -> i32;
3826     pub fn sceNetAdhocctlGetNameByAddr(mac: *mut u8, nickname: *mut u8) -> i32;
3827     pub fn sceNetAdhocctlGetAddrByName(
3828         nickname: *mut u8,
3829         length: *mut i32,
3830         buf: *mut c_void,
3831     ) -> i32;
3832     pub fn sceNetAdhocctlGetParameter(params: *mut SceNetAdhocctlParams) -> i32;
3833 
3834     pub fn sceNetAdhocInit() -> i32;
3835     pub fn sceNetAdhocTerm() -> i32;
3836     pub fn sceNetAdhocPdpCreate(mac: *mut u8, port: u16, buf_size: u32, unk1: i32) -> i32;
3837     pub fn sceNetAdhocPdpDelete(id: i32, unk1: i32) -> i32;
3838     pub fn sceNetAdhocPdpSend(
3839         id: i32,
3840         dest_mac_addr: *mut u8,
3841         port: u16,
3842         data: *mut c_void,
3843         len: u32,
3844         timeout: u32,
3845         nonblock: i32,
3846     ) -> i32;
3847     pub fn sceNetAdhocPdpRecv(
3848         id: i32,
3849         src_mac_addr: *mut u8,
3850         port: *mut u16,
3851         data: *mut c_void,
3852         data_length: *mut c_void,
3853         timeout: u32,
3854         nonblock: i32,
3855     ) -> i32;
3856     pub fn sceNetAdhocGetPdpStat(size: *mut i32, stat: *mut SceNetAdhocPdpStat) -> i32;
3857     pub fn sceNetAdhocGameModeCreateMaster(data: *mut c_void, size: i32) -> i32;
3858     pub fn sceNetAdhocGameModeCreateReplica(mac: *mut u8, data: *mut c_void, size: i32) -> i32;
3859     pub fn sceNetAdhocGameModeUpdateMaster() -> i32;
3860     pub fn sceNetAdhocGameModeUpdateReplica(id: i32, unk1: i32) -> i32;
3861     pub fn sceNetAdhocGameModeDeleteMaster() -> i32;
3862     pub fn sceNetAdhocGameModeDeleteReplica(id: i32) -> i32;
3863     pub fn sceNetAdhocPtpOpen(
3864         srcmac: *mut u8,
3865         srcport: u16,
3866         destmac: *mut u8,
3867         destport: u16,
3868         buf_size: u32,
3869         delay: u32,
3870         count: i32,
3871         unk1: i32,
3872     ) -> i32;
3873     pub fn sceNetAdhocPtpConnect(id: i32, timeout: u32, nonblock: i32) -> i32;
3874     pub fn sceNetAdhocPtpListen(
3875         srcmac: *mut u8,
3876         srcport: u16,
3877         buf_size: u32,
3878         delay: u32,
3879         count: i32,
3880         queue: i32,
3881         unk1: i32,
3882     ) -> i32;
3883     pub fn sceNetAdhocPtpAccept(
3884         id: i32,
3885         mac: *mut u8,
3886         port: *mut u16,
3887         timeout: u32,
3888         nonblock: i32,
3889     ) -> i32;
3890     pub fn sceNetAdhocPtpSend(
3891         id: i32,
3892         data: *mut c_void,
3893         data_size: *mut i32,
3894         timeout: u32,
3895         nonblock: i32,
3896     ) -> i32;
3897     pub fn sceNetAdhocPtpRecv(
3898         id: i32,
3899         data: *mut c_void,
3900         data_size: *mut i32,
3901         timeout: u32,
3902         nonblock: i32,
3903     ) -> i32;
3904     pub fn sceNetAdhocPtpFlush(id: i32, timeout: u32, nonblock: i32) -> i32;
3905     pub fn sceNetAdhocPtpClose(id: i32, unk1: i32) -> i32;
3906     pub fn sceNetAdhocGetPtpStat(size: *mut i32, stat: *mut SceNetAdhocPtpStat) -> i32;
3907 }
3908 
3909 extern "C" {
3910     pub fn sceNetAdhocMatchingInit(memsize: i32) -> i32;
3911     pub fn sceNetAdhocMatchingTerm() -> i32;
3912     pub fn sceNetAdhocMatchingCreate(
3913         mode: AdhocMatchingMode,
3914         max_peers: i32,
3915         port: u16,
3916         buf_size: i32,
3917         hello_delay: u32,
3918         ping_delay: u32,
3919         init_count: i32,
3920         msg_delay: u32,
3921         callback: AdhocMatchingCallback,
3922     ) -> i32;
3923     pub fn sceNetAdhocMatchingDelete(matching_id: i32) -> i32;
3924     pub fn sceNetAdhocMatchingStart(
3925         matching_id: i32,
3926         evth_pri: i32,
3927         evth_stack: i32,
3928         inth_pri: i32,
3929         inth_stack: i32,
3930         opt_len: i32,
3931         opt_data: *mut c_void,
3932     ) -> i32;
3933     pub fn sceNetAdhocMatchingStop(matching_id: i32) -> i32;
3934     pub fn sceNetAdhocMatchingSelectTarget(
3935         matching_id: i32,
3936         mac: *mut u8,
3937         opt_len: i32,
3938         opt_data: *mut c_void,
3939     ) -> i32;
3940     pub fn sceNetAdhocMatchingCancelTarget(matching_id: i32, mac: *mut u8) -> i32;
3941     pub fn sceNetAdhocMatchingCancelTargetWithOpt(
3942         matching_id: i32,
3943         mac: *mut u8,
3944         opt_len: i32,
3945         opt_data: *mut c_void,
3946     ) -> i32;
3947     pub fn sceNetAdhocMatchingSendData(
3948         matching_id: i32,
3949         mac: *mut u8,
3950         data_len: i32,
3951         data: *mut c_void,
3952     ) -> i32;
3953     pub fn sceNetAdhocMatchingAbortSendData(matching_id: i32, mac: *mut u8) -> i32;
3954     pub fn sceNetAdhocMatchingSetHelloOpt(
3955         matching_id: i32,
3956         opt_len: i32,
3957         opt_data: *mut c_void,
3958     ) -> i32;
3959     pub fn sceNetAdhocMatchingGetHelloOpt(
3960         matching_id: i32,
3961         opt_len: *mut i32,
3962         opt_data: *mut c_void,
3963     ) -> i32;
3964     pub fn sceNetAdhocMatchingGetMembers(
3965         matching_id: i32,
3966         length: *mut i32,
3967         buf: *mut c_void,
3968     ) -> i32;
3969     pub fn sceNetAdhocMatchingGetPoolMaxAlloc() -> i32;
3970     pub fn sceNetAdhocMatchingGetPoolStat(poolstat: *mut AdhocPoolStat) -> i32;
3971 }
3972 
3973 extern "C" {
3974     pub fn sceNetApctlInit(stack_size: i32, init_priority: i32) -> i32;
3975     pub fn sceNetApctlTerm() -> i32;
3976     pub fn sceNetApctlGetInfo(code: ApctlInfo, pinfo: *mut SceNetApctlInfo) -> i32;
3977     pub fn sceNetApctlAddHandler(handler: SceNetApctlHandler, parg: *mut c_void) -> i32;
3978     pub fn sceNetApctlDelHandler(handler_id: i32) -> i32;
3979     pub fn sceNetApctlConnect(conn_index: i32) -> i32;
3980     pub fn sceNetApctlDisconnect() -> i32;
3981     pub fn sceNetApctlGetState(pstate: *mut ApctlState) -> i32;
3982 
3983     pub fn sceNetInetInit() -> i32;
3984     pub fn sceNetInetTerm() -> i32;
3985     pub fn sceNetInetAccept(s: i32, addr: *mut sockaddr, addr_len: *mut socklen_t) -> i32;
3986     pub fn sceNetInetBind(s: i32, my_addr: *const sockaddr, addr_len: socklen_t) -> i32;
3987     pub fn sceNetInetConnect(s: i32, serv_addr: *const sockaddr, addr_len: socklen_t) -> i32;
3988     pub fn sceNetInetGetsockopt(
3989         s: i32,
3990         level: i32,
3991         opt_name: i32,
3992         opt_val: *mut c_void,
3993         optl_en: *mut socklen_t,
3994     ) -> i32;
3995     pub fn sceNetInetListen(s: i32, backlog: i32) -> i32;
3996     pub fn sceNetInetRecv(s: i32, buf: *mut c_void, len: usize, flags: i32) -> usize;
3997     pub fn sceNetInetRecvfrom(
3998         s: i32,
3999         buf: *mut c_void,
4000         flags: usize,
4001         arg1: i32,
4002         from: *mut sockaddr,
4003         from_len: *mut socklen_t,
4004     ) -> usize;
4005     pub fn sceNetInetSend(s: i32, buf: *const c_void, len: usize, flags: i32) -> usize;
4006     pub fn sceNetInetSendto(
4007         s: i32,
4008         buf: *const c_void,
4009         len: usize,
4010         flags: i32,
4011         to: *const sockaddr,
4012         to_len: socklen_t,
4013     ) -> usize;
4014     pub fn sceNetInetSetsockopt(
4015         s: i32,
4016         level: i32,
4017         opt_name: i32,
4018         opt_val: *const c_void,
4019         opt_len: socklen_t,
4020     ) -> i32;
4021     pub fn sceNetInetShutdown(s: i32, how: i32) -> i32;
4022     pub fn sceNetInetSocket(domain: i32, type_: i32, protocol: i32) -> i32;
4023     pub fn sceNetInetClose(s: i32) -> i32;
4024     pub fn sceNetInetGetErrno() -> i32;
4025 
4026     pub fn sceSslInit(unknown1: i32) -> i32;
4027     pub fn sceSslEnd() -> i32;
4028     pub fn sceSslGetUsedMemoryMax(memory: *mut u32) -> i32;
4029     pub fn sceSslGetUsedMemoryCurrent(memory: *mut u32) -> i32;
4030 
4031     pub fn sceHttpInit(unknown1: u32) -> i32;
4032     pub fn sceHttpEnd() -> i32;
4033     pub fn sceHttpCreateTemplate(agent: *mut u8, unknown1: i32, unknown2: i32) -> i32;
4034     pub fn sceHttpDeleteTemplate(templateid: i32) -> i32;
4035     pub fn sceHttpCreateConnection(
4036         templateid: i32,
4037         host: *mut u8,
4038         unknown1: *mut u8,
4039         port: u16,
4040         unknown2: i32,
4041     ) -> i32;
4042     pub fn sceHttpCreateConnectionWithURL(templateid: i32, url: *const u8, unknown1: i32) -> i32;
4043     pub fn sceHttpDeleteConnection(connection_id: i32) -> i32;
4044     pub fn sceHttpCreateRequest(
4045         connection_id: i32,
4046         method: HttpMethod,
4047         path: *mut u8,
4048         content_length: u64,
4049     ) -> i32;
4050     pub fn sceHttpCreateRequestWithURL(
4051         connection_id: i32,
4052         method: HttpMethod,
4053         url: *mut u8,
4054         content_length: u64,
4055     ) -> i32;
4056     pub fn sceHttpDeleteRequest(request_id: i32) -> i32;
4057     pub fn sceHttpSendRequest(request_id: i32, data: *mut c_void, data_size: u32) -> i32;
4058     pub fn sceHttpAbortRequest(request_id: i32) -> i32;
4059     pub fn sceHttpReadData(request_id: i32, data: *mut c_void, data_size: u32) -> i32;
4060     pub fn sceHttpGetContentLength(request_id: i32, content_length: *mut u64) -> i32;
4061     pub fn sceHttpGetStatusCode(request_id: i32, status_code: *mut i32) -> i32;
4062     pub fn sceHttpSetResolveTimeOut(id: i32, timeout: u32) -> i32;
4063     pub fn sceHttpSetResolveRetry(id: i32, count: i32) -> i32;
4064     pub fn sceHttpSetConnectTimeOut(id: i32, timeout: u32) -> i32;
4065     pub fn sceHttpSetSendTimeOut(id: i32, timeout: u32) -> i32;
4066     pub fn sceHttpSetRecvTimeOut(id: i32, timeout: u32) -> i32;
4067     pub fn sceHttpEnableKeepAlive(id: i32) -> i32;
4068     pub fn sceHttpDisableKeepAlive(id: i32) -> i32;
4069     pub fn sceHttpEnableRedirect(id: i32) -> i32;
4070     pub fn sceHttpDisableRedirect(id: i32) -> i32;
4071     pub fn sceHttpEnableCookie(id: i32) -> i32;
4072     pub fn sceHttpDisableCookie(id: i32) -> i32;
4073     pub fn sceHttpSaveSystemCookie() -> i32;
4074     pub fn sceHttpLoadSystemCookie() -> i32;
4075     pub fn sceHttpAddExtraHeader(id: i32, name: *mut u8, value: *mut u8, unknown1: i32) -> i32;
4076     pub fn sceHttpDeleteHeader(id: i32, name: *const u8) -> i32;
4077     pub fn sceHttpsInit(unknown1: i32, unknown2: i32, unknown3: i32, unknown4: i32) -> i32;
4078     pub fn sceHttpsEnd() -> i32;
4079     pub fn sceHttpsLoadDefaultCert(unknown1: i32, unknown2: i32) -> i32;
4080     pub fn sceHttpDisableAuth(id: i32) -> i32;
4081     pub fn sceHttpDisableCache(id: i32) -> i32;
4082     pub fn sceHttpEnableAuth(id: i32) -> i32;
4083     pub fn sceHttpEnableCache(id: i32) -> i32;
4084     pub fn sceHttpEndCache() -> i32;
4085     pub fn sceHttpGetAllHeader(request: i32, header: *mut *mut u8, header_size: *mut u32) -> i32;
4086     pub fn sceHttpGetNetworkErrno(request: i32, err_num: *mut i32) -> i32;
4087     pub fn sceHttpGetProxy(
4088         id: i32,
4089         activate_flag: *mut i32,
4090         mode: *mut i32,
4091         proxy_host: *mut u8,
4092         len: usize,
4093         proxy_port: *mut u16,
4094     ) -> i32;
4095     pub fn sceHttpInitCache(max_size: usize) -> i32;
4096     pub fn sceHttpSetAuthInfoCB(id: i32, cbfunc: HttpPasswordCB) -> i32;
4097     pub fn sceHttpSetProxy(
4098         id: i32,
4099         activate_flag: i32,
4100         mode: i32,
4101         new_proxy_host: *const u8,
4102         new_proxy_port: u16,
4103     ) -> i32;
4104     pub fn sceHttpSetResHeaderMaxSize(id: i32, header_size: u32) -> i32;
4105     pub fn sceHttpSetMallocFunction(
4106         malloc_func: HttpMallocFunction,
4107         free_func: HttpFreeFunction,
4108         realloc_func: HttpReallocFunction,
4109     ) -> i32;
4110 
4111     pub fn sceNetResolverInit() -> i32;
4112     pub fn sceNetResolverCreate(rid: *mut i32, buf: *mut c_void, buf_length: u32) -> i32;
4113     pub fn sceNetResolverDelete(rid: i32) -> i32;
4114     pub fn sceNetResolverStartNtoA(
4115         rid: i32,
4116         hostname: *const u8,
4117         addr: *mut in_addr,
4118         timeout: u32,
4119         retry: i32,
4120     ) -> i32;
4121     pub fn sceNetResolverStartAtoN(
4122         rid: i32,
4123         addr: *const in_addr,
4124         hostname: *mut u8,
4125         hostname_len: u32,
4126         timeout: u32,
4127         retry: i32,
4128     ) -> i32;
4129     pub fn sceNetResolverStop(rid: i32) -> i32;
4130     pub fn sceNetResolverTerm() -> i32;
4131 }
4132