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