forums.ps2dev.org Forum Index forums.ps2dev.org
Homebrew PS2, PSP & PS3 Development Discussions
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Locating Sysconf
Goto page 1, 2  Next
 
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PSP Development
View previous topic :: View next topic  
Author Message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 1:18 am    Post subject: Locating Sysconf Reply with quote

Hey,

I've been trying this for awhile, searched all over the web, and I think the best place to ask it is here.
I'm trying to locate the sysconf_plugin_module, my first attempt was the following (Pseudo-C):
Code:
   sceKernelDelayThread(2000000);
   sceKernelDcacheWritebackAll();
   u32 *start = (u32 *)sceKernelFindModuleByName("sysconf_plugin_module");
   u32 module = *(start+27);

That didn't seem to work, however, turning the delay thread into 15 seconds, booting the PSP, and rushing to a settings menu, allowed me to relocate the module, but that's a bit annoying for the end user.

So, sysconf doesn't seem to load on boot yet, so I need an alternative to find it.

Any help is appreciated,
JumpR


Last edited by JumpR on Sun Feb 10, 2008 6:56 am; edited 2 times in total
Back to top
View user's profile Send private message
TyRaNiD



Joined: 18 Jan 2004
Posts: 918

PostPosted: Sun Feb 10, 2008 2:16 am    Post subject: Reply with quote

Few questions...

1) Why?
2) Why?
3) See 1 and 2
Back to top
View user's profile Send private message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 2:23 am    Post subject: Reply with quote

TyRaNiD wrote:
Few questions...

1) Why?
2) Why?
3) See 1 and 2

I want to apply some memory patches in sysconf. Oh, oops, I confused relocate with locate, I modified the post, my apologies.


Last edited by JumpR on Sun Feb 10, 2008 2:31 am; edited 2 times in total
Back to top
View user's profile Send private message
jimparis



Joined: 10 Jun 2005
Posts: 1179
Location: Boston

PostPosted: Sun Feb 10, 2008 2:26 am    Post subject: Reply with quote

I think you mean "locate" not "relocate".
Back to top
View user's profile Send private message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 2:27 am    Post subject: Reply with quote

jimparis wrote:
I think you mean "locate" not "relocate".

Indeed. Sorry, didn't think of the difference at first, English is not my first language, locating is a bit more logic to do then relocating, I'll edit first post.
I feel quite emberassed.
Back to top
View user's profile Send private message
SilverSpring



Joined: 27 Feb 2007
Posts: 115

PostPosted: Sun Feb 10, 2008 2:58 am    Post subject: Reply with quote

It's a vsh plugin so it only loads when it's used like all other vsh plugin modules (for picture, music, movie, etc.). Ie. when you click the icon.
Back to top
View user's profile Send private message Visit poster's website
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 2:59 am    Post subject: Reply with quote

SilverSpring wrote:
It's a vsh plugin so it only loads when it's used like all other vsh plugin modules (for picture, music, movie, etc.). Ie. when you click the icon.

I know, but I need to figure out when it's loaded, so that I can start locating and patching it once that happens, that's why I'm writing all the voodoo code.
I might've caused some confusion with my first post. All I want to do is figure out when sysconf loads, and the location of it.
Back to top
View user's profile Send private message
SilverSpring



Joined: 27 Feb 2007
Posts: 115

PostPosted: Sun Feb 10, 2008 3:17 am    Post subject: Reply with quote

JumpR wrote:
SilverSpring wrote:
It's a vsh plugin so it only loads when it's used like all other vsh plugin modules (for picture, music, movie, etc.). Ie. when you click the icon.

I know, but I need to figure out when it's loaded, so that I can start locating and patching it once that happens, that's why I'm writing all the voodoo code.
I might've caused some confusion with my first post. All I want to do is figure out when sysconf loads, and the location of it.


The VSH uses scePaf_72A0044D to load/start the module. You can hook it and search for "flash0:/vsh/module/sysconf_plugin.prx" in it's second arg to know when it gets loaded.
Back to top
View user's profile Send private message Visit poster's website
moonlight



Joined: 26 Oct 2005
Posts: 567

PostPosted: Sun Feb 10, 2008 3:18 am    Post subject: Reply with quote

Well, for things like this is for what i export the function sctrlHENSetStartModuleHandler on the cfw, for dynamic patching :P
Back to top
View user's profile Send private message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 3:20 am    Post subject: Reply with quote

SilverSpring wrote:
JumpR wrote:
SilverSpring wrote:
It's a vsh plugin so it only loads when it's used like all other vsh plugin modules (for picture, music, movie, etc.). Ie. when you click the icon.

I know, but I need to figure out when it's loaded, so that I can start locating and patching it once that happens, that's why I'm writing all the voodoo code.
I might've caused some confusion with my first post. All I want to do is figure out when sysconf loads, and the location of it.


The VSH uses scePaf_72A0044D to load/start the module. You can hook it and search for "flash0:/vsh/module/sysconf_plugin.prx" in it's second arg to know when it gets loaded.

Thanks for the information, do you have a quick example on how to hook a function? I did several attempts with things like these
Code:
#define MIPS_J_ADDRESS(x) (((u32)((x)) & 0x3FFcFFFFF) >> 2)
#define JAL_TO(x) (0x0E000000 | MIPS_J_ADDRESS(x))

Then attempting to patch the calls with that and _sw, but it didn't really work.
If you've got a (link to a) example, it'd be great, thanks for all the help so far!
I have partial MIPS knowledge and I'll be able to find the memory offsets I need, so that's not a problem.
Back to top
View user's profile Send private message
moonlight



Joined: 26 Oct 2005
Posts: 567

PostPosted: Sun Feb 10, 2008 3:26 am    Post subject: Reply with quote

If you are in a kernel mode prx, you cannot hook a user function like that, not without endind with a crash.
Back to top
View user's profile Send private message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 3:45 am    Post subject: Reply with quote

moonlight wrote:
If you are in a kernel mode prx, you cannot hook a user function like that, not without endind with a crash.

I didn't notice your previous post till now, I downloaded the M33 SDK and found the sctrlHENSetStartModuleHandler, interesting function which I'll sure experiment with.
However, if I can't hook a user function from a kernel PRX, how would I go about doing that then? A user mode plugin isn't really a perfect solution as far as I know.
Thanks for the help.
Back to top
View user's profile Send private message
moonlight



Joined: 26 Oct 2005
Posts: 567

PostPosted: Sun Feb 10, 2008 3:50 am    Post subject: Reply with quote

Well, better use that function I told you. It will advise your module whenever a module is about to start. You just have to compare mod->modname name with the one you are searching, and doing stuff in that case.

But be careful of using it correctly, calling the "previous" function if it exists, and setting the correct compiler flags (as indicated in function documentation) to avoid the compiler using the gp register.
Back to top
View user's profile Send private message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 3:55 am    Post subject: Reply with quote

moonlight wrote:
Well, better use that function I told you. It will advise your module whenever a module is about to start. You just have to compare mod->modname name with the one you are searching, and doing stuff in that case.

But be careful of using it correctly, calling the "previous" function if it exists, and setting the correct compiler flags (as indicated in function documentation) to avoid the compiler using the gp register.

Indeed will I use your function, but the question regarding the hooking of functions was apart from it.

Because, after detecting the module, I need to hook some functions in the module. I expected my old code to work, but you just posted that you can't hook user functions from a kernel PRX. Because of that, I'd better ask that seperate question here right now, rather then creating a new thread about it. After this, I should know everything I need to know.

Thanks for your time,
JumpR
Back to top
View user's profile Send private message
Hellcat



Joined: 24 Jan 2007
Posts: 84

PostPosted: Sun Feb 10, 2008 4:13 am    Post subject: Reply with quote

Not sure if this really helps, but here's the code I use to hook syscalls:
Code:
struct SyscallHeader
{
  void *unk;
  unsigned int basenum;
  unsigned int topnum;
  unsigned int size;
};

u32 pspFindProc(const char* szMod, const char* szLib, u32 nid)
{
  struct SceLibraryEntryTable *entry;
   SceModule *pMod;
   void *entTab;
   int entLen;

   pMod = sceKernelFindModuleByName(szMod);

   if (!pMod)
   {
      // NOP //
      return 0;
   }
   
   int i = 0;

   entTab = pMod->ent_top;
   entLen = pMod->ent_size;
   
   while(i < entLen)
  {
      int count;
      int total;
      unsigned int *vars;

      entry = (struct SceLibraryEntryTable *) (entTab + i);

    if(entry->libname && !strcmp(entry->libname, szLib))
      {
         total = entry->stubcount + entry->vstubcount;
         vars = entry->entrytable;

         if(entry->stubcount > 0)
         {
            for(count = 0; count < entry->stubcount; count++)
            {
               if (vars[count] == nid)
               {
                return vars[count+total];
              }               
            }
         }
      }

      i += (entry->len * 4);
   }

   return 0;
}

void* pspGetSysCallAddr(u32 addr)
{
  struct SyscallHeader *head;
  u32 *syscalls;
  void **ptr;
  int size;
  int i;

  asm(
    "cfc0 %0, $12\n"
    : "=r"(ptr)
  );

  if(!ptr)
  {
    return NULL;
  }

  head = (struct SyscallHeader *) *ptr;
  syscalls = (u32*) (*ptr + 0x10);
  size = (head->size - 0x10);

  for(i = 0; i < size; i++)
  {
    if(syscalls[i] == addr)
    {
      return &syscalls[i];
    }
  }

  return NULL;
}

// static
void* pspPatchProcCall(u32 *addr, void *func)
{
  if(!addr)
  {
    return NULL;
  }
  *addr = (u32) func;
  sceKernelDcacheWritebackInvalidateRange(addr, sizeof(addr));
  sceKernelIcacheInvalidateRange(addr, sizeof(addr));

  return addr;
}

and call it (perform the actual hooking) with something like this:
Code:
  oProcAddr = (void*)pspFindProc("sceIOFileManager", "IoFileMgrForUser", 0x109F50BC);
  pspPatchProcCall(pspGetSysCallAddr((u32)oProcAddr), &patchedIoOpen);
  oIoOpen = (void*)oProcAddr;



A bit OT, but:
Can anyone tell me in which .PRX is the code doing the memstick formattig when using the option in System-Config of the PSP?
I wanna check a few things in there....
Back to top
View user's profile Send private message
moonlight



Joined: 26 Oct 2005
Posts: 567

PostPosted: Sun Feb 10, 2008 4:17 am    Post subject: Reply with quote

The process is really ugly :)

Well, user mode and kernel one comunicate between syscalls.
So, basically you have to set a syscall instruction in the point to hook, and make sure the syscall number will end in your code. You can have a syscall in your code by exporting a function to user mode, and the number of your syscall can be get using sceKernelQuerySystemCall(addr), where addr is the address of your function, although I'm not sure if in latest firmwares the syscall is inmediately assigned or if it assigned after having been imported at least once.
Another way would be just patching the address of an already registered syscall, and find a way of diferentiating the call to that function from the one to yours.

Another problem is that syscall don't have a delay slot, so when replacing a jal with a syscall instruction, you have to take care of that.

EDIT: well, someone replied first :p
Back to top
View user's profile Send private message
moonlight



Joined: 26 Oct 2005
Posts: 567

PostPosted: Sun Feb 10, 2008 4:23 am    Post subject: Reply with quote

Hellcat wrote:

A bit OT, but:
Can anyone tell me in which .PRX is the code doing the memstick formattig when using the option in System-Config of the PSP?
I wanna check a few things in there....


The format itself is done through a fatms0 devctl, in concrete, the devctl code 0x0241d813, but i don't know the caller, maybe sysconf_plugin.

EDIT: yeah, it is, i saw the code.

Code:

u32 x[1];
x[0] = 0;
vshIoDevctl("fatms0:",  0x0241d813,  &x, 4, NULL, 0);

(After last edit, this should be the correct code. I bet the "x" is really a structure with only one field that is set to 0/NULL.)

Probably requires kernel mode, that's why they are using vshIoDevctl.


Last edited by moonlight on Sun Feb 10, 2008 4:38 am; edited 5 times in total
Back to top
View user's profile Send private message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 4:29 am    Post subject: Reply with quote

Thanks for all the help, much appreciated. I'll Google a bit for more information about syscalls and I should be fine.
Thanks!
Back to top
View user's profile Send private message
KickinAezz



Joined: 03 Jun 2007
Posts: 328

PostPosted: Sun Feb 10, 2008 5:34 am    Post subject: Reply with quote

moonlight wrote:
If you are in a kernel mode prx, you cannot hook a user function like that, not without endind with a crash.
:confused: I had no problems doing so in the past.
_________________
Intrigued by PSP system Since December 2006.
Use it more for Development than for Gaming.
Back to top
View user's profile Send private message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 6:39 am    Post subject: Reply with quote

Well, this just isn't going to work, I downloaded the M33 SDK and copied it to the pspdev directory (it's found by the compiler if I include it), and coded this in my attempt to dump the sysconf:
Code:
#include <pspkernel.h>
#include <pspctrl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <systemctrl.h>
#include <systemctrl_se.h>
PSP_MODULE_INFO("dump", 0x1000, 0, 1);      
PSP_MAIN_THREAD_ATTR(0);
STMOD_HANDLER previous = NULL;
int OnModuleStart(SceModule2 *mod);
int OnModuleStart(SceModule2 *mod){
   if (strcmp(mod->modname, "sysconf_plugin_module") == 0)
   {
      u32 *start = (u32 *)sceKernelFindModuleByName("sysconf_plugin_module");
      u32 module = *(start+27);
      int fd = sceIoOpen("ms0:/dump.bin", PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);
      sceKernelDcacheWritebackAll();
      sceIoWrite(fd, (void*) module, 0x030000);
      sceIoClose(fd);
    }
   if (!previous) return 0;
   return previous(mod);
}
int main_thread(SceSize args, void* argp)
{
   sceKernelDelayThread(2000000);
   previous = sctrlHENSetStartModuleHandler(OnModuleStart);
//   int fd = sceIoOpen("ms0:/sysconf_dump.bin", PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);
//   sceIoWrite(fd, (void*) module, 0x030000);
//   sceIoClose(fd);
   return 0;
}

int module_start(SceSize args, void *argp)
{

   SceUID thid;
   thid = sceKernelCreateThread("ch_main", main_thread, 0x18, 0x1000, 0, NULL);
   if (thid >= 0) sceKernelStartThread(thid, args, argp);
   return 0;
}

int module_stop (void) {
   return 0;
}

Added the flag that I should add according to the SDK function doc and also added this:
Code:
LIBS = -lpspsystemctrl_kernel

So, I attempted to compile, and it doesn't work.
Code:
In file included from dump.c:6:
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:189: er
ror: expected ')' before '*' token
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:230: er
ror: expected '=', ',', ';', 'asm' or '__attribute__' before 'sctrlHENSetStartMo
duleHandler'
dump.c:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'previ
ous'
dump.c:11: error: expected ')' before '*' token
dump.c:12: error: expected ')' before '*' token
dump.c: In function 'main_thread':
dump.c:29: error: 'previous' undeclared (first use in this function)
dump.c:29: error: (Each undeclared identifier is reported only once
dump.c:29: error: for each function it appears in.)
dump.c:29: warning: implicit declaration of function 'sctrlHENSetStartModuleHand
ler'
dump.c:29: error: 'OnModuleStart' undeclared (first use in this function)

But I'm probably slowly moving into the newbie questions, so maybe I shouldn't ask them here, if so, tell me.
Back to top
View user's profile Send private message
moonlight



Joined: 26 Oct 2005
Posts: 567

PostPosted: Sun Feb 10, 2008 6:44 am    Post subject: Reply with quote

KickinAezz wrote:
moonlight wrote:
If you are in a kernel mode prx, you cannot hook a user function like that, not without endind with a crash.
:confused: I had no problems doing so in the past.


You cannot jump from a user address to a kernel address directly. Another thing would be in 1.50, where a kernel static elf can be loaded in user memory.
Back to top
View user's profile Send private message
TyRaNiD



Joined: 18 Jan 2004
Posts: 918

PostPosted: Sun Feb 10, 2008 10:16 pm    Post subject: Reply with quote

Well if you need to get the syscall numbers allocated (and it doesn't do it for you at load time) you could always make a small user mode prx which you load the unload ;)
Back to top
View user's profile Send private message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Sun Feb 10, 2008 10:51 pm    Post subject: Reply with quote

TyRaNiD wrote:
Well if you need to get the syscall numbers allocated (and it doesn't do it for you at load time) you could always make a small user mode prx which you load the unload ;)

Thanks, but I currently can't even get the M33 SDK working, it keeps showing me errors like these:
Code:
In file included from dump.c:6:
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:189: er
ror: expected ')' before '*' token
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:230: er
ror: expected '=', ',', ';', 'asm' or '__attribute__' before 'sctrlHENSetStartMo
duleHandler'
dump.c:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'previ
ous'
dump.c:11: error: expected ')' before '*' token
dump.c:12: error: expected ')' before '*' token
dump.c: In function 'main_thread':
dump.c:29: error: 'previous' undeclared (first use in this function)
dump.c:29: error: (Each undeclared identifier is reported only once
dump.c:29: error: for each function it appears in.)
dump.c:29: warning: implicit declaration of function 'sctrlHENSetStartModuleHand
ler'
dump.c:29: error: 'OnModuleStart' undeclared (first use in this function)

See my previous post for details. This is driving me crazy, if I recall I had this problem with hundreds of things I tried to compile, which I just stopped working on them for. I wish I could get this fixed by now.
My Makefile:
Code:
TARGET = dump
OBJS = dump.o

USE_KERNEL_LIBC=1
USE_KERNEL_LIBS=1

PSP_FW_VERSION=371

PRX_EXPORTS=exports.exp

INCDIR =
CFLAGS = -Os -G0 -Wall -fno-strict-aliasing -fno-builtin-printf -fno-pic
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR =
LIBS = -lpspsystemctrl_kernel
LDFLAGS = -mno-crt0 -nostartfiles

PSPSDK=/usr/local/pspdev/psp/sdk
include $(PSPSDK)/lib/build_prx.mak


Any clues?
Back to top
View user's profile Send private message
Mashphealh



Joined: 28 Nov 2007
Posts: 18

PostPosted: Mon Feb 11, 2008 2:03 am    Post subject: Reply with quote

JumpR wrote:
TyRaNiD wrote:
Well if you need to get the syscall numbers allocated (and it doesn't do it for you at load time) you could always make a small user mode prx which you load the unload ;)

Thanks, but I currently can't even get the M33 SDK working, it keeps showing me errors like these:
Code:
In file included from dump.c:6:
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:189: er
ror: expected ')' before '*' token
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:230: er
ror: expected '=', ',', ';', 'asm' or '__attribute__' before 'sctrlHENSetStartMo
duleHandler'
dump.c:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'previ
ous'
dump.c:11: error: expected ')' before '*' token
dump.c:12: error: expected ')' before '*' token
dump.c: In function 'main_thread':
dump.c:29: error: 'previous' undeclared (first use in this function)
dump.c:29: error: (Each undeclared identifier is reported only once
dump.c:29: error: for each function it appears in.)
dump.c:29: warning: implicit declaration of function 'sctrlHENSetStartModuleHand
ler'
dump.c:29: error: 'OnModuleStart' undeclared (first use in this function)

See my previous post for details. This is driving me crazy, if I recall I had this problem with hundreds of things I tried to compile, which I just stopped working on them for. I wish I could get this fixed by now.
My Makefile:
Code:
TARGET = dump
OBJS = dump.o

USE_KERNEL_LIBC=1
USE_KERNEL_LIBS=1

PSP_FW_VERSION=371

PRX_EXPORTS=exports.exp

INCDIR =
CFLAGS = -Os -G0 -Wall -fno-strict-aliasing -fno-builtin-printf -fno-pic
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR =
LIBS = -lpspsystemctrl_kernel
LDFLAGS = -mno-crt0 -nostartfiles

PSPSDK=/usr/local/pspdev/psp/sdk
include $(PSPSDK)/lib/build_prx.mak


Any clues?
I get the same error if I use systemctrl.h :S .
Back to top
View user's profile Send private message
moonlight



Joined: 26 Oct 2005
Posts: 567

PostPosted: Mon Feb 11, 2008 3:35 am    Post subject: Reply with quote

It maybe because in som version I forgto to include the modified psploadcore.h with "SceModule2" structure.

Try to add this at the beginning of file:
Code:

typedef struct SceModule2
{
   struct SceModule   *next; // 0
   u16               attribute; // 4
   u8               version[2]; // 6
   char            modname[27]; // 8
   char            terminal; // 0x23
   char            mod_state;   // 0x24
    char            unk1;    // 0x25
   char            unk2[2]; // 0x26
   u32               unk3;   // 0x28
   SceUID            modid; // 0x2C
   u32               unk4; // 0x30
   SceUID            mem_id; // 0x34
   u32               mpid_text;   // 0x38
   u32               mpid_data; // 0x3C
   void *            ent_top; // 0x40
   unsigned int      ent_size; // 0x44
   void *            stub_top; // 0x48
   u32               stub_size; // 0x4C
   u32               entry_addr_; // 0x50
   u32               unk5[4]; // 0x54
   u32               entry_addr; // 0x64
   u32               gp_value; // 0x68
   u32               text_addr; // 0x6C
   u32               text_size; // 0x70
   u32               data_size;   // 0x74
   u32               bss_size; // 0x78
   u32               nsegment; // 0x7C
   u32               segmentaddr[4]; // 0x80
   u32               segmentsize[4]; // 0x90
} SceModule2;
Back to top
View user's profile Send private message
JumpR



Joined: 10 Feb 2008
Posts: 25

PostPosted: Mon Feb 11, 2008 4:12 am    Post subject: Reply with quote

It compiles now, time to start messing with it.
Thanks! =D
Back to top
View user's profile Send private message
Mashphealh



Joined: 28 Nov 2007
Posts: 18

PostPosted: Mon Feb 11, 2008 6:55 pm    Post subject: Reply with quote

Works perfect, thanks again moonlight ;)
Back to top
View user's profile Send private message
ne0h



Joined: 21 Feb 2008
Posts: 386

PostPosted: Tue Oct 14, 2008 12:45 am    Post subject: Reply with quote

Excuse me,
can I use the "normal" sceIoDevctl in a kernel mode prx to format the ms?
Because I don't know where is defined vshIoDevctl function, I've found a stub file, but if I can I want to use standard library...
_________________
Get Xplora!
Back to top
View user's profile Send private message
Torch



Joined: 28 May 2008
Posts: 842

PostPosted: Tue Oct 14, 2008 1:13 am    Post subject: Reply with quote

ne0h wrote:
Excuse me,
can I use the "normal" sceIoDevctl in a kernel mode prx to format the ms?
Because I don't know where is defined vshIoDevctl function, I've found a stub file, but if I can I want to use standard library...

if ur in kernel mode then use sce function. usually vsh* style duplicates are for using the kernel version from user module, like xmb
Back to top
View user's profile Send private message
ab5000



Joined: 06 May 2008
Posts: 74

PostPosted: Tue Oct 14, 2008 1:50 am    Post subject: Reply with quote

ne0h wrote:
Excuse me,
can I use the "normal" sceIoDevctl in a kernel mode prx to format the ms?
Because I don't know where is defined vshIoDevctl function, I've found a stub file, but if I can I want to use standard library...


the vshIo* functions are just a bridge. they simply calls the kernel functions, so a user app can access them. if you are in kernel mode, you can use sceIo*.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PSP Development All times are GMT + 10 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group