Subversion Repositories freemyipod

Rev

Rev 772 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 772 Rev 814
Line 842... Line 842...
842
                }
842
                }
843
                case 30:  // FILE_OPEN
843
                case 30:  // FILE_OPEN
844
                {
844
                {
845
                    dbgasyncsendbuf[0] = 1;
845
                    dbgasyncsendbuf[0] = 1;
846
                    int fd = file_open((char*)(&dbgasyncsendbuf[4]), (int)(dbgasyncsendbuf[1]));
846
                    int fd = file_open((char*)(&dbgasyncsendbuf[4]), (int)(dbgasyncsendbuf[1]));
-
 
847
                    if (fd > 0) reown_file(fd, KERNEL_OWNER(KERNEL_OWNER_USB_MONITOR));
847
                    dbgasyncsendbuf[1] = (uint32_t)fd;
848
                    dbgasyncsendbuf[1] = (uint32_t)fd;
848
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
849
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
849
                    break;
850
                    break;
850
                }
851
                }
851
                case 31:  // FILESIZE
852
                case 31:  // FILESIZE
Line 890... Line 891...
890
                    dbgasyncsendbuf[1] = (uint32_t)close((int)(dbgasyncsendbuf[1]));
891
                    dbgasyncsendbuf[1] = (uint32_t)close((int)(dbgasyncsendbuf[1]));
891
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
892
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
892
                    break;
893
                    break;
893
                case 38:  // CLOSE_MONITOR_FILES
894
                case 38:  // CLOSE_MONITOR_FILES
894
                    dbgasyncsendbuf[0] = 1;
895
                    dbgasyncsendbuf[0] = 1;
-
 
896
                    int rc = close_all_of_process(KERNEL_OWNER(KERNEL_OWNER_USB_MONITOR));
895
                    dbgasyncsendbuf[1] = (uint32_t)close_all_of_process(current_thread);
897
                    dbgasyncsendbuf[1] = (uint32_t)rc;
896
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
898
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
897
                    break;
899
                    break;
898
                case 39:  // RELEASE_FILES
900
                case 39:  // RELEASE_FILES
899
                    dbgasyncsendbuf[0] = 1;
901
                    dbgasyncsendbuf[0] = 1;
900
                    dbgasyncsendbuf[1] = (uint32_t)release_files((int)(dbgasyncsendbuf[1]));
902
                    dbgasyncsendbuf[1] = (uint32_t)release_files((int)(dbgasyncsendbuf[1]));
Line 911... Line 913...
911
                                                          (char*)(&dbgasyncsendbuf[66]));
913
                                                          (char*)(&dbgasyncsendbuf[66]));
912
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
914
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
913
                    break;
915
                    break;
914
                case 42:  // OPENDIR
916
                case 42:  // OPENDIR
915
                    dbgasyncsendbuf[0] = 1;
917
                    dbgasyncsendbuf[0] = 1;
916
                    dbgasyncsendbuf[1] = (uint32_t)opendir((char*)(&dbgasyncsendbuf[4]));
918
                    DIR* dir = opendir((char*)(&dbgasyncsendbuf[4]));
-
 
919
                    if (dir > 0) reown_dir(dir, KERNEL_OWNER(KERNEL_OWNER_USB_MONITOR));
-
 
920
                    dbgasyncsendbuf[1] = (uint32_t)dir;
917
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
921
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
918
                    break;
922
                    break;
919
                case 43:  // READDIR
923
                case 43:  // READDIR
920
                    dbgasyncsendbuf[0] = 1;
924
                    dbgasyncsendbuf[0] = 1;
921
                    dbgasyncsendbuf[3] = (uint32_t)readdir((DIR*)(dbgasyncsendbuf[1]));
925
                    dbgasyncsendbuf[3] = (uint32_t)readdir((DIR*)(dbgasyncsendbuf[1]));
Line 928... Line 932...
928
                    dbgasyncsendbuf[1] = (uint32_t)closedir((DIR*)(dbgasyncsendbuf[1]));
932
                    dbgasyncsendbuf[1] = (uint32_t)closedir((DIR*)(dbgasyncsendbuf[1]));
929
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
933
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
930
                    break;
934
                    break;
931
                case 45:  // CLOSE_MONITOR_DIRS
935
                case 45:  // CLOSE_MONITOR_DIRS
932
                    dbgasyncsendbuf[0] = 1;
936
                    dbgasyncsendbuf[0] = 1;
-
 
937
                    rc = closedir_all_of_process(KERNEL_OWNER(KERNEL_OWNER_USB_MONITOR));
933
                    dbgasyncsendbuf[1] = (uint32_t)closedir_all_of_process(current_thread);
938
                    dbgasyncsendbuf[1] = (uint32_t)rc;
934
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
939
                    usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
935
                    break;
940
                    break;
936
                case 46:  // RELEASE_DIRS
941
                case 46:  // RELEASE_DIRS
937
                    dbgasyncsendbuf[0] = 1;
942
                    dbgasyncsendbuf[0] = 1;
938
                    dbgasyncsendbuf[1] = (uint32_t)release_dirs((int)(dbgasyncsendbuf[1]));
943
                    dbgasyncsendbuf[1] = (uint32_t)release_dirs((int)(dbgasyncsendbuf[1]));
Line 979... Line 984...
979
                break;
984
                break;
980
#endif
985
#endif
981
            case DBGACTION_MALLOC:
986
            case DBGACTION_MALLOC:
982
                dbgasyncsendbuf[0] = 1;
987
                dbgasyncsendbuf[0] = 1;
983
                dbgasyncsendbuf[1] = (uint32_t)malloc((size_t)dbgactionlength);
988
                dbgasyncsendbuf[1] = (uint32_t)malloc((size_t)dbgactionlength);
-
 
989
                if (dbgasyncsendbuf[1])
-
 
990
                    reownalloc(dbgasyncsendbuf[1], KERNEL_OWNER(KERNEL_OWNER_USB_MONITOR));
984
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
991
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
985
                break;
992
                break;
986
            case DBGACTION_MEMALIGN:
993
            case DBGACTION_MEMALIGN:
987
                dbgasyncsendbuf[0] = 1;
994
                dbgasyncsendbuf[0] = 1;
988
                dbgasyncsendbuf[1] = (uint32_t)memalign((size_t)dbgactionoffset,
995
                dbgasyncsendbuf[1] = (uint32_t)memalign((size_t)dbgactionoffset,
989
                                                        (size_t)dbgactionlength);
996
                                                        (size_t)dbgactionlength);
-
 
997
                if (dbgasyncsendbuf[1])
-
 
998
                    reownalloc(dbgasyncsendbuf[1], KERNEL_OWNER(KERNEL_OWNER_USB_MONITOR));
990
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
999
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
991
                break;
1000
                break;
992
            case DBGACTION_REALLOC:
1001
            case DBGACTION_REALLOC:
993
                dbgasyncsendbuf[0] = 1;
1002
                dbgasyncsendbuf[0] = 1;
994
                dbgasyncsendbuf[1] = (uint32_t)realloc((void*)dbgactionaddr,
1003
                dbgasyncsendbuf[1] = (uint32_t)realloc((void*)dbgactionaddr,
Line 1005... Line 1014...
1005
                free((void*)dbgactionaddr);
1014
                free((void*)dbgactionaddr);
1006
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
1015
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
1007
                break;
1016
                break;
1008
            case DBGACTION_FREEMONITOR:
1017
            case DBGACTION_FREEMONITOR:
1009
                dbgasyncsendbuf[0] = 1;
1018
                dbgasyncsendbuf[0] = 1;
-
 
1019
                int rc = free_all_of_thread(KERNEL_OWNER(KERNEL_OWNER_USB_MONITOR));
1010
                dbgasyncsendbuf[1] = (uint32_t)free_all_of_thread(current_thread);
1020
                dbgasyncsendbuf[1] = (uint32_t)rc;
1011
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
1021
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
1012
                break;
1022
                break;
1013
#ifdef HAVE_RTC
1023
#ifdef HAVE_RTC
1014
            case DBGACTION_RTCREAD:
1024
            case DBGACTION_RTCREAD:
1015
                dbgasyncsendbuf[0] = 1;
1025
                dbgasyncsendbuf[0] = 1;