static void register_parition_var(void) { int i; unsigned long long p_size; char *type_buf; char *value_buf; char *var_name_buf; char *p_name_buf; for(i=0;i<PART_MAX_COUNT;i++){ p_size = partition_get_size(i); if(p_size == -1) break; partition_get_name(i,&p_name_buf); partition_get_type(i,&type_buf); var_name_buf = malloc(30); sprintf(var_name_buf,"partition-type:%s",p_name_buf); fastboot_publish(var_name_buf,type_buf); //printf("%d %s %s\n",i,var_name_buf,type_buf); /*reserved for MTK security*/ if(!strcmp(type_buf,"ext4")){ if(!strcmp(p_name_buf,"userdata")){ p_size -= (u64)1*1024*1024; if (p_size > 800*1024*1024) { p_size = 800*1024*1024; } } } value_buf = malloc(20); sprintf(value_buf,"%llx",p_size); var_name_buf = malloc(30); sprintf(var_name_buf,"partition-size:%s",p_name_buf); fastboot_publish(var_name_buf,value_buf); //printf("%d %s %s\n",i,var_name_buf,value_buf); } }
char * dm_get_name(dm_descriptor_t desc, int *errp) { descriptor_t *dp; char *nm = NULL; char *name = NULL; dp = (descriptor_t *)(uintptr_t)desc; cache_rlock(); if (!cache_is_valid_desc(dp)) { cache_unlock(); *errp = EBADF; return (NULL); } /* verify that the descriptor is still valid */ if (dp->p.generic == NULL) { cache_unlock(); *errp = ENODEV; return (NULL); } switch (dp->type) { case DM_DRIVE: nm = (drive_get_name(dp)); break; case DM_BUS: nm = (bus_get_name(dp)); break; case DM_CONTROLLER: nm = (controller_get_name(dp)); break; case DM_MEDIA: nm = (media_get_name(dp)); break; case DM_SLICE: nm = (slice_get_name(dp)); break; case DM_PARTITION: nm = (partition_get_name(dp)); break; case DM_PATH: nm = (path_get_name(dp)); break; case DM_ALIAS: nm = (alias_get_name(dp)); break; } cache_unlock(); *errp = 0; if (nm != NULL) { name = strdup(nm); if (name == NULL) { *errp = ENOMEM; return (NULL); } return (name); } return (NULL); }